Подтвердить что ты не робот

Ошибка связи для модульного тестирования с помощью XCode 4?

Я хочу написать некоторые логические модульные тесты для классов в моем приложении XCode. В Xcode 4 я нажал на название проекта в Навигаторе проектов, а внизу нажал Add Target. Я выбрал "Cocoa Touch Unit Testing Bundle" в разделе "Другое", чтобы дать новой цели "имя продукта" "тестов" и закончить.

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

Затем я перехожу к созданному файлу test.m, импортирую класс, который я хочу проверить (под ним ReleasePlanManager) и вызовет один из его методов. Но компоновщик выходит из строя с ошибкой, например:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_ReleasePlanManager", referenced from:
      objc-class-ref in tests.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

Таким образом, класс не может быть найден, хотя (по моему мнению) добавление цели приложения (которое является частью) должно быть достаточным?

Любая помощь будет принята с благодарностью. Спасибо!

4b9b3361

Ответ 1

В тестовом комплекте требуются дополнительные настройки:

  • Установите Bundle Loader на $(BUILT_PRODUCTS_DIR)/AppName.app/AppName (заменив AppName в обоих местах именем вашего приложения)
  • Установите тестовый хост на $(BUNDLE_LOADER)

(Если вы создаете проект с нуля и включаете модульные тесты, они настроены для вас, но если вы добавите пакет unit test в существующий проект, это не так.)