OCUnit Application Test с Simulator в терминале

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

Спасибо

Ответ 1

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

Отказ от ответственности: Это решение требует редактирования системных файлов. Он работает для меня, но может испортить стек модульного тестирования 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 вашего тестового пакета.

Убедитесь, что ваш тестовый комплект содержит этап сборки script с содержимым

# 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

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

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

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

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

Ответ 3

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

Ответ 4

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