Вопрос по xcode, ios – Модульное тестирование в статической библиотеке

6

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

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

Я получаю сообщение об ошибке «Lexical or Preprocessor Issue» xxx.h ». файл не найден & quot ;. Я не получаю это сообщение, когда создаю основную цель пользовательского интерфейса напрямую.

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

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

Ваш Ответ

3   ответа
0

В вашей цели теста, перейдите в настройки сборки. Добавьте путь к заголовкам вашей статической библиотеки в Пути поиска заголовков.

10

Обязательно ознакомьтесь с образцом кода Apple «Юнит-тесты»: https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

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

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

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

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

2

В дополнение к ответу Джона Рейда мне также пришлось сделать следующее: В вашей цели теста, перейдите в настройки сборки. Установите & quot; Всегда искать пути пользователя & quot; в ДА

Похожие вопросы