Модульные тесты запускаются автоматически только тогда, когда активным SDK является «симулятор»? - PullRequest
2 голосов
/ 30 марта 2010

Я следовал инструкциям, которые Apple публикует для приложений для модульного тестирования на iPhone , и все отлично работает, когда я установил активный SDK на «iPhone Simulator». Он настроен на постоянную сборку и запуск моих тестов как часть самого приложения.

Apple подразумевает (опущено), что это должно работать постоянно, но тесты пропускаются, когда я устанавливаю активный SDK на «Устройство iPhone». Я также связываюсь с OCMock, и вместо неудачного теста это предупреждение находится в журнале сборки:

ld: warning: in .../build/Debug-iphoneos/OCMock.framework/OCMock, missing required architecture arm in file

Очень приятно сделать пакет юнит-тестов зависимым от основного приложения, поэтому эти тесты запускаются при каждой сборке, но его полезность значительно уменьшается, если он не работает во время сборок устройства. Это известное, но недокументированное ограничение?

1 Ответ

0 голосов
/ 25 сентября 2010

Как заметил Кристофер, именно так ведет себя XCode. Шаг Run Script в конце вашей цели Unit Test фактически запустит встроенную цель, когда SDK установлен на Simulator, но если вы посмотрите на выходные данные сборки, он просто прервется при сборке с Device SDK.

По сути, создайте свои LogicTests для SDK Simulator и создайте свои ApplicationTests для Device SDK. Это боль, но так оно и есть.

Кроме того, если вы хотите, чтобы OCMock работал на ARM (что вам, скорее всего, понадобится для тестов приложений, запускаемых на реальном устройстве), я считаю, что их цель для OCMock lib - "толстая" / Universal по умолчанию. То есть он будет включать в себя и код i386, и код arm в одной библиотеке. У вас будут лучшие результаты, если вы проверите их хранилище и создадите его самостоятельно.

...