Модульное тестирование iOS: класс реализован в обоих
Я создаю приложение для iOS 9 с Swift 2 и XCode7.
Мое приложение работает нормально при развертывании его на моем телефоне. Но когда я запускаю какой-либо модульный тест, я получаю следующее сообщение об ошибке для многих классов:
Класс _TtC5AppName19ClassName реализован в / Users /Имя пользователя/ Библиотека / Разработчик /CoreSimulator/ Устройства /UUID/ Данные / Контейнеры / Пакет / Приложение /UUID/AppName.app /AppName и / Users /Имя пользователя/Путь / К / Рабочая область./ DerivedData /AppName/ Build / Продукты / Debug-iphonesimulator /AppName.xctest /AppName. Один из двух будет использован. Какой из них не определен.
Есть идеи?
2 ответа
Только добавьте тестовый класс к вашей тестовой цели и ни один из классов приложения iPhone. Затем просто импортируйте имя вашего приложения как модуль поверх вашего тестового класса, чтобы получить доступ ко всем классам приложения.
import MyAppName
Дублированные реализации классов при выполнении набора тестов: в моем случае, поскольку цель тестирования имеет хост-приложение, вам не нужно связывать сторонние фреймворки. Пришлось чистить "Другие флаги линкера" (OTHER_LDFLAGS
) из параметров сборки, поскольку он был связан со всеми CocoaPods рабочей области.
Ответ @Mundi является верным в некоторых случаях.
Тем не менее, я столкнулся с той же ошибкой, и причина была в том, что libPods.a
файл для Бобов Какао был связан в цели приложения и цели теста.
У меня была такая же ошибка с XCTest. Не забудьте выбрать
Allow testing Host Application APIs
.
Тогда внутри
Build Phases
для тебя
XCTest Target
- как говорили другие - убедитесь, что у вас нет файлов в
Compile Sources
которые уже скомпилированы в
Host Application
.