Опция Test After Build в XCode 4 не работает

Итак, у меня есть медведь времени, выясняя это. Я посмотрел вокруг, и, похоже, не могу найти никакой информации об этом.

Я хочу, чтобы мои модульные тесты ВСЕГДА запускались КАЖДЫЙ раз, когда я создаю свой код в XCode. Я прочитал несколько сообщений, в том числе этот вопрос< /а> здесь. Я следовал инструкциям буквально, и сборка не запускает тесты.

Что я сделал:

  • Мой набор тестов является целевой зависимостью моей основной сборки
  • В моей основной сборке для параметра «Тест после сборки» установлено значение «Да».
  • Все тесты на этапе «тест» в схеме присутствуют и проверены

Если запускаю тесты вручную - через cmd+U или меню - тесты запускаются. Я добавил неудачный тест, чтобы попытаться заставить сборку завершиться неудачно, поэтому я могу быть уверен, что они работают. Сборка по-прежнему проходит нормально, а тесты никогда не запускаются.

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


person aperkins    schedule 16.07.2011    source источник
comment
Вы добавили свою тестовую цель в раздел «Тест» основных настроек схемы цели? Для этого отредактируйте основную целевую схему, щелкните раздел «Тест» на левой панели, а на правой панели добавьте свою тестовую цель. Затем перейдите в раздел «Сборка» на левой панели и в правом разделе отметьте «Выполнить для вас тестовую цель». надеюсь, это поможет вам!   -  person Learner    schedule 25.09.2011
comment
@Learner Да, я уже сделал это. Похоже, это проблема с версией XCode, которую я использую, наряду с некоторыми другими ошибками сбоя и тому подобным, которые я нахожу. Я бы хотел, чтобы они выпустили обновление для Snow Leopard.   -  person aperkins    schedule 27.09.2011
comment
Комментарий @Learner сработал для меня, я заметил, что мой тестовый проект не настроен для запуска в настройке схемы сборки основной цели.   -  person Brian Wigginton    schedule 04.10.2011
comment
См. мой ответ здесь › я автоматически выполняю модульные тесты для каждой сборки"> stackoverflow.com/questions/6673333/   -  person Brian Wigginton    schedule 04.10.2011
comment
@BrianWigginton это забавно - я все это сделал. Я думаю, что в xCode 4 есть ошибка, которая выявляется чем-то необычным в конфигурации этого проекта. Ну что ж. Я попробую это с другим проектом в какой-то момент в будущем.   -  person aperkins    schedule 04.10.2011
comment
Тесты запускаются, когда вы нажимаете Test. Как правило, актуальная сборка является обязательным условием теста, а не наоборот. Поэтому, если вы измените свой код, а затем запустите тест, он будет построен. Поэтому всегда тестируйте, а не стройте. Вероятно, вы также можете добавить фазу сборки сценария для вызова вашей тестовой цели, но я никогда не делал этого сам.   -  person Bored Astronaut    schedule 16.12.2011
comment
@BoredAstronaut Все дело в том, что я не хочу, чтобы сборка была успешной без прохождения тестов, то есть весь смысл такой функциональности заключается в том, что модульные тесты являются частью успешного процесса сборки. Это обычная система в других средах сборки, таких как Maven и Ant, и считается лучшей практикой, помогающей гарантировать, что ваши модульные тесты проходят при изменении кода. Полагаться на ручное поведение — это, как правило, рецепт забывчивости, урок, который я усвоил слишком много раз;)   -  person aperkins    schedule 16.12.2011


Ответы (2)


Неважно, установлено ли для параметра «Тест после сборки» значение «да» или «нет» в целевой программе Something.app. Необходимо только установить для параметра «Тест после сборки» значение YES в цели модульного теста. Также убедитесь, что для целевого объекта модульного теста в редакторе схемы в параметрах вкладки «Сборка» выбраны «Тест» и «Выполнить». Чтобы просмотреть результаты, нажмите «Просмотр навигатора журналов» > «Навигаторы» > «Показать навигатор журналов» (команда 7).

person jaredsinclair    schedule 24.09.2012
comment
Я думаю, что это должен быть принятый ответ. Это первое, что я видел для различных форм этого вопроса, чтобы все было правильно, без множества дополнительных шагов вуду, которые на самом деле не являются частью решения. Спасибо, @Джаред! - person big_m; 26.11.2012

В фазах сборки вашей основной цели добавьте новую фазу сборки Run Script. Содержание сценария должно быть:

"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"

Это запустит тесты, но только если он сможет найти файлы .octest, созданные вашим проектом. RunUnitTests хочет, чтобы PRODUCT_NAME было именем вашего модульного теста, а WRAPPER_EXTENSION — .octest (это переменные Xcode). Если ваша основная цель — это совокупная цель, в которой ваши тесты И ваше приложение являются зависимостями, вы, вероятно, можете заставить ее работать с учетом этого.

person quellish    schedule 28.01.2012