[CocoaPods]使用CocoaPods进行测试

测试规格

从CocoaPods 1.3.0开始,pod现在可以提供测试规范(或简称测试规范)。测试规范可用于描述给定pod的测试源。

这是一个示例CoconutLib.podspec,一个定义测试规范的虚构库:

 1 Pod::Spec.new do |s|
 2   s.name         = 'CoconutLib'
 3   s.version      = '1.0'
 4   s.authors      = 'Coconut Corp', { 'Monkey Boy' => 'monkey@coconut-corp.local' }
 5   s.homepage     = 'http://coconut-corp.local/coconut-lib.html'
 6   s.summary      = 'Coconuts For the Win.'
 7   s.description  = 'All the Coconuts'
 8   s.source       = { :git => 'http://coconut-corp.local/coconut-lib.git', :tag => 'v1.0' }
 9   s.license      = {
10     :type => 'MIT',
11     :file => 'LICENSE',
12     :text => 'Permission is hereby granted ...'
13   }
14   s.source_files        = 'Classes/*.{h,m}'
15 
16   s.test_spec 'Tests' do |test_spec|
17     test_spec.source_files = 'Tests/*.{h,m}'
18     test_spec.dependency 'OCMock' # This dependency will only be linked with your tests.
19   end  
20 end

测试规范在消耗它们时就像子规则一样,但它们在生成中的配置方式不同Pods.xcodeproj测试规范源和依赖项不会包含在CoconutLib源中。如果您想要使用不同的测试源和依赖项描述pod的不同部分,则可以选择在podspec中具有多个测试规范。

在你的Podfile,你可以把测试规范这样:

1 target 'MyApp' do
2   use_frameworks!
3   pod 'CoconutLib', '~> 1.0', :testspecs => ['Tests'] 
4 end

当你pod install这将自动Pods.xcodeprojCoconutLibpod中创建一个测试目标您可以选择该方案并构建并运行测试!

Linting

pod lib lintpod spec lint现在有建立并自动运行测试,当你掉毛的podspec支持。例如,linting CoconutLib.podspec会自动设置并运行由给定测试规范提供的测试。如果您想跳过此步骤,可以使用该--skip-tests标志。

pod lib lint CoconutLib.podspec --skip-tests

应用主机

使用CocoaPods 1.4.0,对测试规范添加了对应用程序主机的支持。如果您的测试需要应用程序主机才能正确执行,那么您可以在podspec中指定:

1   s.test_spec 'Tests' do |test_spec|
2     test_spec.requires_app_host = true
3     test_spec.source_files = 'Tests/*.{h,m}'
4   end

请注意,CocoaPods只会生成一个可供多个测试规范使用的应用程序主机。

原文地址:https://www.cnblogs.com/strengthen/p/10639009.html