Тест приложения OCUnit с симулятором в терминале - PullRequest
11 голосов
/ 06 июля 2011

Можно ли запустить тест приложения, который запускается в симуляторе, с помощью команды терминала?

Спасибо

Ответы [ 4 ]

14 голосов
/ 12 июля 2011

Да, я получил его на работу.Мое решение несколько грубое и может не подойти в каждом случае.

Отказ от ответственности: Это решение требует редактирования системных файлов.Это работает для меня, но может испортить стек модульного тестирования XCode, особенно если вы не понимаете, что делаете.

В /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools/RunPlatformUnitTests замените

if [ "${TEST_HOST}" != "" ]; then

    Warning ${LINENO} "Skipping tests; the iPhoneSimulator platform does not currently support application-hosted tests (TEST_HOST set)."

else

на

if [ "${TEST_HOST}" != "" ]; then

    mkdir -p "${BUILT_PRODUCTS_DIR}/Documents"
    mkdir -p "${BUILT_PRODUCTS_DIR}/Library/Caches"
    mkdir -p "${BUILT_PRODUCTS_DIR}/Library/Preferences"
    mkdir -p "${BUILT_PRODUCTS_DIR}/tmp"

    export CFFIXED_USER_HOME="${BUILT_PRODUCTS_DIR}/"

    RunTestsForApplication "${TEST_HOST}" "${TEST_BUNDLE_PATH}"
else

Вы можете переместить дом пользователя с фиксированными правами в другое место, но я думаю, что вам нужно будет переместить пакеты .app и .octest.

Добавить -RegisterForSystemEvents в OTHER_TEST_FLAGS настройка сборки вашего тестового комплекта.

Убедитесь, что ваш тестовый комплект содержит фазу сборки сценария запуска с содержанием

# Run the unit tests in this test bundle.
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"

Создайте новую схему для ваших тестов.

Вы должны иметь возможность запускать тесты из командной строки, используя стандартный xcodebuild:

xcodebuild -workspace $(WORKSPACE_NAME).xcworkspace -scheme $(TEST_SCHEME) -configuration debug -sdk iphonesimulator

Имитатор не должен быть запущен во время выполнения тестов.

Я надеюсь, что эта информация полна, если что-то не работает, как ожидалось, пожалуйста, спросите.

2 голосов
/ 27 июля 2012

Вы можете убедиться, что Симулятор не работает с этим:

osascript -e 'tell app "iPhone Simulator" to quit'

Вы можете определить, активен ли Симулятор с этим:

sh -c 'ps -xaco command | grep "iPhone Simulator"'

1 голос
/ 25 сентября 2012

Похоже, что в Xcode 4.5GM теперь поддерживается запуск тестов приложений в симуляторе.

1 голос
/ 07 декабря 2011

сработало отлично, спасибо!Автоматизированное тестирование снова в работе на нашем CI-сервере Jenkins!Просто надо было починить мой TEST_HOST=${BUNDLE_LOADER}.Сделайте это, если вы получите ошибки об отсутствии такого файла при запуске тестов.

...