Каталог сборки Xcode 4.3 отличается в зависимости от конфигурации? - PullRequest
0 голосов
/ 08 марта 2012

Я очень старался, чтобы Xcode 4.3 был единственной версией Xcode в моей системе.

Я создал новый проект (с Git и юнит-тестами). К этому проекту я добавил новую конфигурацию, скопированную из Debug, под названием «Покрытие». В проекте (не «главная цель», а «проект») я включил «тест на сборку» для конфигурации Coverage. В основной цели я включил как «тестовое покрытие», так и «поток программы прибора» для конфигурации покрытия.

Я также добавил новую схему, скопированную с единственной другой схемы, также называемой «Покрытие». Единственное отличие в этой схеме - установить флажок «Выполнить» для тестового проекта в действии сборки.

Я не изменил расположение DerivedData в настройках Xcode.

Хорошо, это настройка.

Когда я запускаю xcodebuild -configuration Coverage -sdk iphonesimulator -scheme Coverage build, выходные данные отправляются в папку DerivedData, как и ожидалось, и данные покрытия кода создаются, как и ожидалось (после настройки сценария в XCode, что-то около TEST_HOST).

Когда я запускаю xcodebuild -configuration Debug -sdk iphonesimulator build, выходные данные отправляются в каталог build в корневом каталоге проекта. То же самое с xcodebuild -configuration Release -sdk iphoneos build.

Как я могу получить эти стандартные конфигурации для генерации артефактов в «правильной» (DerivedData) папке?

Бонусный вопрос: есть ли лучший способ исправить эту вещь TEST_HOST?

1 Ответ

1 голос
/ 13 марта 2012

Получается, что xcodebuild требует аргумент -workspace для нормализации сборок в папке DerivedData.

Бонусный ответ (о TEST_HOST):

Между тестами 'Logic' и тестами 'Application' существует дихотомия, о которой я, как новый разработчик iOS, не знал. Если класс, который вы хотите протестировать, является подклассом некоторого класса пользовательского интерфейса, то это тест «Приложение», который должен выполняться на реальном устройстве. В противном случае (производный от класса NS) этот тест можно запустить на симуляторе. Симулированные тесты требуют пустой TEST_HOST.

О, и вы захотите добавить каждый класс, который вы хотите протестировать, непосредственно к фазе Build Sources вашей тестовой цели в Build Phases вручную, потому что это никогда не сойдет с ума.

Серьезно , если кто-то знает лучший способ, пожалуйста, прокомментируйте, или мне придется принять мой собственный ответ в качестве ответа. Пожалуйста, прокомментируйте также, если представленная информация ошибочна, что, вероятно, и есть.

У вас есть 72 часа. [спокойно питомец длинношерстный белый кот]

...