iOS单元测试框架
使用苹果Xcode自带的XCTest框架。这里不做特别说明,直接在网上搜索相关文章即可。
使用cocoapods进行iOS组件开发
cocoapods的使用这里也不做特别说明,这里重点说明一下单元测试相关的内容。
一般组件的单元测试有两种方式呈现
- 写在Example工程中,工程依赖组件代码即可
- 写在组件的子库中
这里说明后者。
cocoapods iOS组单元测试
- 添加test_spec,并依赖想要测试的子库
- 依赖XcodeCoverage来导出单元测试覆盖率
s.test_spec 'Tests' do |h|
h.source_files = 'TestExample/Tests/**/*.{h,m}'
h.dependency 'TestExample/Core'
h.dependency 'XcodeCoverage','>= 1.3.2'
h.frameworks = 'UIKit','Foundation'
end

test_spec的好处在于,不需要和组件的Example工程绑定,任意一个组件使用者都可以跑单元测试并输出单元测试覆盖率。
一般到这里了就可以参考XcodeCoverage说明进行使用即可。但是这里可能比较麻烦,而且每个组件需要单独设置,不是特别方便。因此我这边制作了一个自动化的插件cocoapods-unit-test。
cocoapods-unit-test插件
安装
直接安装
gem install cocoapods-unit-test
或者使用Gemfile然后进行bundle install
source 'https://rubygems.org/'
gem 'cocoapods', '>= 1.8.4'
gem 'xcpretty','~> 0.3.0'
gem 'cocoapods-unit-test','~ 1.0'
使用
然后Podfile里面添加
plugin 'cocoapods-unit-test',:names => ["TestExample"]
然后在Podfile目录下执行bundle exec pod install即可
说明:这里不限于在组件的Example工程使用,在任意一个APP内都可以这样使用。
单测覆盖率导出
然后在Podfile目录下执行,就会自动跑单测然后输出结果。
bundle exec pod test TestExample
说明:TestExample是这个组件的名称


总结说明
该工具还是非常方便好用的,方便在CI环境使用,欢迎体验。
可以直接看插件主页介绍cocoapods-unit-test和Example工程