Тестирование блока Xcode с помощью Cocoapods

Я несколько раз ударился головой о стену, но, несмотря на несколько поисков Google / SO / Github, я не могу найти решение проблем, которые у меня есть!

Все, что я пытаюсь сделать, это создать некоторые модульные тесты для моего приложения, в которых используются модули Firebase.

Я использую Xcode 7.3.1 и Cocoapods 1.0.1. Обновление: проблема остается с Xcode 8.0

С этим podfile:

platform :ios, '9.0' use_frameworks! inhibit_all_warnings! target 'MyApp' do pod 'Firebase' pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' target 'MyAppTests' do inherit! :search_paths end end 

В моем классе XCTest я получаю

Отсутствует необходимый модуль «Firebase»

ошибка при @testable import MyApp

В качестве альтернативы, этот подкайл:

 platform :ios, '9.0' use_frameworks! inhibit_all_warnings! def common_pods pod 'SwiftyTimer' pod 'Firebase' pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' end target 'MyApp' do common_pods end target 'MyAppTests' do common_pods end 

Тесты строятся, но моя консоль усеяна предупреждениями, например:

Класс <-FirebaseClassName-> реализуется как в … MyApp … и … MyAppTests … Один из двух будет использоваться. Какой из них не определен

7 Solutions collect form web for “Тестирование блока Xcode с помощью Cocoapods”

Я была такая же проблема. Я решил это, переместив pod 'Firebase' в свою тестовую цель. Измените свой подфайл на это:

 platform :ios, '9.0' use_frameworks! inhibit_all_warnings! target 'MyApp' do pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' target 'MyAppTests' do inherit! :search_paths pod 'Firebase' end end 

Проблема в том, что Firebase делает что-то особенное с путями поиска заголовков после того, как CocoaPods генерирует собственное значение для параметра, поэтому CocoaPods не получает этого изменения, чтобы переносить его на целевой объект. Вы можете решить этот один из двух способов:

  1. Найдите MyAppTests.<configuration>.xcconfig в навигаторе файлов и добавьте следующее в HEADER_SEARCH_PATHS :

    ${PODS_ROOT}/Firebase/Analytics/Sources [*]

  2. Найдите настройки для путей поиска заголовков в настройках сборки и добавьте то же значение, что и в опции 1, в список. Вам не нужно указывать его как рекурсивный.

* Согласно комментарию AKM, это изменилось на ${PODS_ROOT}/Firebase/Core/Sources в версии 3.14.0

Попробуйте изменить наследование до :complete , как в:

 target 'MyAppTests' do inherit! :complete end 

Важно отметить, что это позволяет кому-то еще проверить ваш репо, чтобы просто выполнить pod update как обычно, без необходимости копировать файлы .xcconfig или другие хакеры только для сборки.

Решением для меня было обновление cocoapods до версии 1.1.0.rc.2.

sudo gem install cocoapods --pre

У меня была аналогичная проблема. Ссылаясь на ваш вопрос, я скопировал содержимое моего файла MyApp.<configuration>.xcconfig файл MyAppTests.<configuration>.xcconfig . Я очистил и построил тесты, и это сработало.

Добавьте «$ {PODS_ROOT} / Firebase / Core / Sources» в целевую аудиторию только в настройках сборки -> Пути поиска заголовков

Проблема записана в проекте firebase здесь:

https://github.com/firebase/firebase-ios-sdk/issues/58

Существует обходное решение:

Добавьте «$ {PODS_ROOT} / Firebase / Core / Sources» в целевую аудиторию только в настройках сборки -> Пути поиска заголовков

но это также исправлено путем обновления до CocoaPods 1.4.0.

В то время, когда я пишу это (ноябрь 2017 года), cocoapods 1.4.0 все еще находится в стадии бета-тестирования, поэтому для его установки вам необходимо явно запросить бета-версию:

 gem install cocoapods --pre 

Это решило проблему выполнения моих тестов.

  • Простой XCTest для UITest не работает постоянно?
  • Любой способ автоматизировать SFSafariViewController в тестах пользовательского интерфейса?
  • Как написать единичный тест для получения асинхронности nsnotification?
  • Доступ к основным данным приложения из XCTest
  • Как я могу рассчитать покрытие кода статической библиотеки в XCode 5, используя проект, который ссылается на эту статическую библиотеку?
  • Xcode 5 xcodebuild unit test, похоже, возвращает статус успешно при неудачных тестах
  • Как создать трюк с использованием Swift (XCTest)
  • Тестирование пользовательского интерфейса Xcode 7 с ошибками Cocoapods на устройстве
  • как повернуть симулятор с помощью быстрого кода в xcode ui test
  • Подклассы подклассов XCTestCase: Test Navigator не показывает все тесты
  • swipeUp () в XCUIApplication прерывает XCUIApplication в UITest
  • Interesting Posts

    Основные данные. Сбой приложения после добавления дополнительных атрибутов в файл xcddatamodel.

    странная быстрая ошибка после обновления с 1,1 до 1,2

    CoreBluetooth: отключить периферийное соединение от приложения

    Как изменить цвет строки состояния, когда панель навигации скрыта в iOS 7?

    Как установить «Идентичность» полезной нагрузки MDM в iPCU?

    Образцы CMSampleBufferRef Crop

    Можно ли добавить UITableView в UITableViewCell

    Воспроизведение звука при использовании устройства в бесшумном режиме – ios swift

    Возможности, требуемые от plist, могут не функционировать Xcode 6.1

    Задать название аннотации в качестве текущего адреса

    Как преобразовать фрейм на основе размера экрана устройства?

    UINavigationController interactivePopGestureRecognizer работает ненормально в iOS7

    как получить / создать файл .ppt через приложение IOS

    Уведомления о облачных функциях Google iOS

    Совместное использование строк и переменных в приложении ios

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.