Модульное тестирование iOS в Xcode - PullRequest
3 голосов
/ 25 марта 2012

У меня есть приложение, которое я портирую на iOS.В настоящее время я запускаю модульные тесты с каждой сборкой.Мои тесты интегрированы в мое приложение для простоты тестирования, поэтому, когда я прохожу -t, мои тесты запускаются.Самое первое, что я делаю в своей main, это:

for(int ii=1;ii<argc;++ii)
{
    if(strcmp("-t", argv[ii]) == 0)
        return RunAllTests(argc, argv);
}

. Это прекрасно работает на настольном компьютере, и я бы хотел, чтобы он работал и с iOS.Когда я вручную запускаю приложение в симуляторе с пропущенным флагом -t, тесты запускаются, как и ожидалось.К сожалению, это не работает, когда выполняется как шаг после сборки.Я запускаю этот скрипт при каждой сборке: $TARGET_BUILD_DIR/$TARGET_NAME.app/$TARGET_NAME -t.Когда он запускается, я получаю следующую ошибку:

dyld: Library not loaded: /System/Library/Frameworks/UIKit.framework/UIKit
  Referenced from: /development/test/projects/../bin/test.app/test
  Reason: image not found
/development/test/projects/../obj/test.build/Script-27DEB636151ECEC80003FE53.sh: line 2:  8720 Trace/BPT trap: 5       $TARGET_BUILD_DIR/$TARGET_NAME.app/$TARGET_NAME -t
Command /bin/sh failed with exit code 133

Я предполагаю, что это потому, что IDE пытается запустить исполняемый файл напрямую, а не в симуляторе.

Я знаю, что iOS имеетИнфраструктура модульного тестирования, но у меня уже есть рабочий процесс, и я не хотел бы переписывать все свои тесты только для модульного тестирования на iOS.Есть ли способ заставить XCode выполнить мой шаг после сборки в симуляторе, чтобы мои тесты выполнялись правильно?

1 Ответ

0 голосов
/ 22 ноября 2012

В Xcode в меню выберите Продукт-> Редактировать схему ... . Я предполагаю, что вы используете Run или, возможно, Test, но это не имеет значения. Что бы вы ни использовали, нажмите на вкладку Аргументы справа. Вы увидите «Аргументы пройдены при запуске» . Добавьте свой параметр там. Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...