2012-05-16 5 views
6

У меня есть рабочее пространство XCode с проектом пользовательского интерфейса (UI) и основным логическим проектом (Core). Я хочу выполнить единичные тесты OCUnit в проекте пользовательского интерфейса, поэтому я добавил новую цель для тестирования, как это обычно делается.Тестирование модуля в статической библиотеке

Я могу выполнить тесты очень хорошо, пока не поставлю в операторах импорта классы в главном целевом элементе пользовательского интерфейса, которые, в свою очередь, ссылаются на основной проект.

Ошибка, которую я получаю, это «Лексический или препроцессорный выпуск» xxx.h «файл не найден». Я не получаю это сообщение, когда я напрямую настраиваю основной объект пользовательского интерфейса.

Это как если основной объект пользовательского интерфейса знает о Core, когда он построен, но когда он ссылается с тестовой цели, он, похоже, ничего не знает о Core.

Я сделал шаг добавления ссылки на основной проект, используя «Связывание двоичных файлов с библиотеками». Элемент в списке остается красным. Ключ? Возможно, но красная ссылка в списке ссылок не препятствует созданию пользовательского интерфейса и использует основные классы. Я также сделал главной целью зависимость тестовой цели.

ответ

9

Убедитесь, что вы проверить пример кода Apple, «тесты Unit»: https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

Убедитесь, что ваш проект библиотеки устанавливается как зависимостях в фазах сборки вашего OCUnit тестовой мишени, и это связано как библиотека.

Откройте свой проект в Xcode. В меню «Файл» перейдите в «Настройки проекта ...» (или «Параметры рабочей области ...», если вы используете рабочую область). Нажмите «Дополнительно» и убедитесь, что установлен флажок «Уникальный». Очистите и восстановите.

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

Это наиболее распространенные проблемы, с которыми сталкиваются люди в вашей ситуации. Если вы сомневаетесь, проверьте целевые настройки в образце UnitTests против вашего. Удачи!

0

В тестовой цели перейдите к разделу «Настройка параметров». Добавьте путь к заголовкам статической библиотеки в пути поиска заголовков.

2

В дополнение к ответу Джона Рида мне также нужно было сделать следующее: В тестовой цели перейдите в раздел «Настройки сборки». Установите «Всегда искать пути пользователя» до «ДА»

Смежные вопросы