[TOC]
# 1. 测试规范
截至 CocoaPods 1.3.0 pod 现在可以提供测试规范(或简称测试规范)。 测试规范可用于描述给定 pod 的测试来源。
下面是一个CoconutLib.podspec示例,它是一个定义测试规范的虚构库:
~~~
Pod::Spec.new do |s|
s.name = 'CoconutLib'
s.version = '1.0'
s.authors = 'Coconut Corp', { 'Monkey Boy' => 'monkey@coconut-corp.local' }
s.homepage = 'http://coconut-corp.local/coconut-lib.html'
s.summary = 'Coconuts For the Win.'
s.description = 'All the Coconuts'
s.source = { :git => 'http://coconut-corp.local/coconut-lib.git', :tag => 'v1.0' }
s.license = {
:type => 'MIT',
:file => 'LICENSE',
:text => 'Permission is hereby granted ...'
}
s.source_files = 'Classes/*.{h,m}'
s.test_spec 'Tests' do |test_spec|
test_spec.source_files = 'Tests/*.{h,m}'
test_spec.dependency 'OCMock' # This dependency will only be linked with your tests.
end
end
~~~
测试规格就像使用子规格一样处理,但它们在生成的Pods.xcodeproj中的配置方式不同。 CoconutLib 源文件中不包含测试规范的源代码和依赖项。 如果您想用不同的测试资源和依赖关系来描述您的 pod 的不同部分,您可以选择在 podspec 中使用多个测试规范。
在你的 Podfile 中,你可以带上这样的测试规范:
~~~
target 'MyApp' do
use_frameworks!
pod 'CoconutLib', '~> 1.0', :testspecs => ['Tests']
end
~~~
当你 `pod install` 时,它会自动为 CoconutLib pod 的 Pods.xcodeproj 创建一个测试目标。 您可以选择选择该方案并构建并运行测试!
# 2. Linting
目前,`pint lib lint` 和 `pod spec lint` 现在可以支持您在制作 podspec 时自动构建和运行测试。 例如,将 CoconutLib.podspec 进行 linting 会自动设置并运行给定测试规范提供的测试。 如果你想跳过这一步,你可以使用 `--skip-tests` 标志。
~~~
pod lib lint CoconutLib.podspec --skip-tests
~~~
# 3. 支持的测试类型
截至目前,支持的测试类型仅适用于不需要执行应用程序主机的单元测试包。 将来会增加对应用主机测试规格的支持。