Ошибка связи для модульного тестирования с помощью 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
Таким образом, класс не может быть найден, хотя (по моему мнению) добавление цели приложения (которое является частью) должно быть достаточным?
Любая помощь будет принята с благодарностью. Спасибо!
Ответы
Ответ 1
В тестовом комплекте требуются дополнительные настройки:
- Установите Bundle Loader на
$(BUILT_PRODUCTS_DIR)/AppName.app/AppName
(заменив AppName в обоих местах именем вашего приложения)
- Установите тестовый хост на
$(BUNDLE_LOADER)
(Если вы создаете проект с нуля и включаете модульные тесты, они настроены для вас, но если вы добавите пакет unit test в существующий проект, это не так.)