Проблема при выполнении логических тестов после обновления XCode 3.2.4
Недавнее обновление до XCode 3.2.4 и iOS SDK 4.1 привело к тому, что мои модульные тесты больше не работают с моим проектом iOS. Проект в настоящее время работает только на симуляторе, а не на реальном оборудовании.
Я попытался создать новый пустой проект с добавленным фиктивным тестовым примером, который всегда будет проходить, но он также не работает, давая мне такой результат:
Произошла внутренняя ошибка при обработке вывода команды:
- [XCBuildLogCommandInvocationSection setTestsPassedString:]: нераспознанный селектор, отправленный экземпляру 0x20176e320
Произошла внутренняя ошибка при обработке вывода команды:
- [XCBuildLogCommandInvocationSectionRecorder endMarker]: нераспознанный селектор отправлен в экземпляр 0x201257de0
У кого-нибудь еще есть проблемы с тестовыми примерами, использующими XCode 3.2.4 и iOS SDK 4.1?
3 ответа
Кажется, это регрессия с некоторой частью кода отчетности, не учитывающей проблемы часового пояса. Вывод помечается как окончание до его начала, поэтому он очень запутан и задыхается.
Один из обходных путей, который я нашел где-то в Google, - это изменение этапа выполнения сценария запуска цели.
+ Изменить
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
в
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out
Он работает вокруг проблемы, а не решает ее, но работает.
Обход проблемы может быть опубликован на форуме разработчиков Apple. Он отлично работает в моем проекте. Посетите сайт и попробуйте.
Мое предложение исправить вашу проблему - рассмотреть возможность использования GHUnit. Он работает с вашими существующими классами SenTestCase, но также имеет набор тестовых классов / утверждений. Вы просто устанавливаете новую цель и указываете на их класс водителя. Вы получаете полностью работающий тестовый комплект, который может выполнять ваши тесты как на симуляторе, так и на реальных устройствах. Я считаю, что это намного проще и надежнее, чем настройка тестового пакета и необходимость управлять всем этим.