iOS 组件单元测试覆盖率导出工具

3,523 阅读2分钟

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-testExample工程