Невозможно использовать Kiwi для тестирования с помощью фреймворков, добавленных CocoaPods

У меня возникла проблема с тем, чтобы структура тестирования Kiwi работала с фреймворками, добавленными через CocoaPods. Я загружаю как AFNetworking, так и Lumberjack, и оба они вызывают ошибку в тесте. Тестирование выполняется только в том случае, если исходные файлы в моем проекте, встроенные в тестовую цель, включают файлы из CocoaPods. Это сообщение, которое я получаю:

2012-10-15 13: 10: 44.386 otest [47294: 7e03] Комплект тестирования в /Users/ [username]/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/KiwiUnitTest.octest может не загружается, потому что произошла ошибка связи. Вероятно, dyld не может найти инфраструктуру фреймворка или библиотеку, с которой был связан тестовый пакет, возможно, из-за того, что структура или библиотека имели неправильный путь установки во время соединения.

Я следил за всеми инструкциями как на CocoaPods, так и на Kiwi.

Например, у меня есть класс APIClient. Он включает AFHTTPClient.h. Если я запускаю тест без добавления APIClient.m в тестовую цель, то сборка тестов и выполнение выполняется нормально. Если я включаю источник в него, он говорит, что все преуспело, но не выполняются тесты, и указанное выше сообщение об ошибке находится в моем журнале.

Спасибо, Джеймс

Ответ 1

У меня была аналогичная проблема. Удалось исправить это, установив параметр Test Host в KiwiUnitTest Параметры сборки (в разделе "Тестирование модулей" ) на $(BUNDLE_LOADER).

enter image description here

Ответ 2

Отсутствующая проблема pch.dia может быть вызвана несколькими различными факторами, но в моем случае и в случае с некоторыми коллегами это устраняет отсутствующий файл pch.dia

Удалите CocoaPods и установите 0.17.1

sudo gem uninstall cocoapods
sudo gem install cocoapods -v 0.17.1 --verbose

Заблокируйте версию киви до 2.05:

target :KiwiUnitTest, :exclusive => true do
  pod 'Kiwi', '2.0.5'

Очистите проект Xcode, включая Производные данные. Закройте Xcode, заново откройте проект и выполните его.