Xcode: макросы препроцессора для условного кода DEBUG / TEST - PullRequest
11 голосов
/ 21 февраля 2012

В моем коде есть разделы (например, в AppDelegate.m), которые не следует компилировать для модульных тестов, например

#ifndef CONFIGURATION_TESTS
// Code that should not be compiled in the Unit Tests
#endif

Цели устанавливаются XCode, когда вы выбираете «добавить модульные тесты» при создании нового проекта. В файле проекта я добавил флаг CONFIGURATION_TESTS в макросы препроцессора для встроенной цели MyAppTests, но не для цели MyApp.

Это был предложенный способ во многих сообщениях, которые я нашел.

Но это не работает, потому что (я предполагаю) цель MyAppTests имеет цель MyApp в качестве зависимости, и поскольку AppDelegate.m добавляется к цели MyApp, она компилируется с настройками сборки MyApp и, следовательно, CONFIGURATION_TESTS не определено.

В файлах юнит-теста макрос определен и ведет себя как ожидалось (поскольку тестовые файлы создаются только целевым объектом MyAppTests?)

Кто-нибудь знает, как это сделать, я думал, что это будет общая проблема ...

Ответы [ 2 ]

11 голосов
/ 03 сентября 2013

Я наконец-то нашел ответ сам: ключ в том, чтобы создать новую конфигурацию сборки (давайте назовем эту конфигурацию Testing)

Затем вы настраиваете значения макроса препроцессора соответственно, поэтому для конфигурации Debug и Release вы устанавливаете CONFIGURATION_TESTS = 0, а для тестирования конфигурации вы устанавливаете CONFIGURATION_TESTS = 1

Наконец, вы редактируете схему Unit-Test, чтобы использовать Testing в качестве конфигурации сборки. Вот и все: P

Я написал подробное пошаговое объяснение в моем блоге

3 голосов
/ 11 января 2013

Вам необходимо установить «CONFIGURATION_TESTS = 1», а не просто «CONFIGURATION_TESTS»

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