У меня есть приложение, которое я портирую на 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 выполнить мой шаг после сборки в симуляторе, чтобы мои тесты выполнялись правильно?