Как мне протестировать частную библиотеку Cocoapods? - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь выяснить, как настроить модульное тестирование для моей частной библиотеки cocoapod.

Вот ожидаемый результат:

Я добавил цель модульного тестирования MyPodTests к Проект «Стручки», затем я изменил цель на мою схему «MyPodTests». Затем я создал тестовые классы для своих модульных тестов. Теперь я могу выбрать схему MyPodLib и нажать CMD + U, и цель тестирования выполнит тесты. Это поведение, которое я ищу.

Этот подход, однако, имеет некоторые недостатки. Если я выполняю «pod update» или «pod install» в моем примере приложения, цель тестирования пропадает. если я вызову обновление pod в моем приложении-примере, тесты тоже исчезнут. Я уверен, что есть правильный способ сделать это. Кроме того, я хотел бы запретить загрузку тестовых классов любым пользователям, использующим библиотеку, поэтому я добавил исключение в свой подспи c:

s.exclude_files = 'Pod/Classes/**/Test/*'

Когда я выбираю MyPodLib и нажимаю CMD + U ничего не происходит, и если я выбираю MyPodTests и нажимаю CMD + U, выдается ошибка «Нет такого модуля« MyPodLib »».

1 Ответ

0 голосов
/ 27 января 2020

Возможно, вы захотите запускать тесты независимо от вашего примера приложения. Если это так, добавьте тестовый подвид c в свой модуль c и задайте его исходные файлы.

Например, допустим, у вас есть проект Xcode с целевой платформой MyFramework и целевой тест MyFrameworkTests. Ваш модуль c будет выглядеть следующим образом:

Pod::Spec.new do |s|
  s.name           = "MyFramework"
  s.version        = "1.0.0"
  s.summary        = "Summary of what MyFramework does"
  s.homepage       = "https://www.website.com"
  s.license        = { :type => "MIT", :file => "LICENCE.txt" }
  s.author         = "Ramesh Boosa"
  s.platform       = :ios, "11.0"
  s.swift_versions = ["5.0", "5.1"]
  s.source         = { :git => "https://github.com/MyName/MyFramework.git", :tag => "v#{s.version}" }
  s.source_files   = "MyFramework/*.swift"
  s.test_spec do|test|
    test.source_files = "MyFrameworkTests/*.swift"
  end
end

Чтобы пометить ваш модуль c и запустить свои модульные тесты, выполните pod spec lint MyFramework.podspec.

Если пример приложения в комплекте с вашим модулем вы можете добавить хост приложения к вашему подспе c. Документация CocoaPods содержит более подробную информацию.

...