启用代码覆盖以迅速进行Bamboo

在我工作的地方,我们将Bamboo作为我们的iOS开发CI工具。 Bamboo的一个不错的功能之一是它与Clover集成在一起,并且将显示详细的覆盖率和单元测试数据。 缺点是这些功能最容易与Java集成。 好处是,只需做一些工作,我们就可以为iOS和Swift做类似的事情。

必备工具

您需要在构建服务器上使用以下工具

  • Python /点
  • cobertura-clover-transform(https://github.com/cwacek/cobertura-clover-transform)
  • xcov(https://github.com/nakiostudio/xcov)[ 可选 ]
  • slather(https://github.com/SlatherOrg/slather)
  • 扫描(https://github.com/fastlane/fastlane)

步骤1:设定Python

在您的Bamboo构建服务器(或专用的Mac构建节点)上,创建python虚拟环境并安装cobertura-clover-transform

  pip安装virtualenv 
cd〜/开发
虚拟环境
来源venv / bin / activate
pip安装cobertura-clover-transform

这将创建一个安装了cobertura-clover-transform工具的虚拟环境-该工具将覆盖率报告转换为Bamboo可以读取的三叶草格式

步骤2:在Bamboo上安装其他工具

下一步是安装所需的红宝石宝石:

  sudo gem install xcov fastlane slather 

步骤3:配置本地项目以进行代码覆盖

您的XCode项目需要配置为收集coverage数据。 您只需要执行一次此步骤,然后提交更改。

  slather设置 

步骤4:配置Bamboo

在Bamboo中,您将需要添加一个新的脚本任务,该任务将运行生成覆盖率和单元测试结果所需的命令。

示例脚本代码:

扫瞄

第一步是运行单元测试以生成coverage数据。 这是通过扫描完成的

 扫描-配置调试\ 
--scheme \
--output_types junit,html \
--output_directory xml_report /
  mv xml_report / report.junit xml_report / report.junit.xml 

扫描工具运行以特定方案配置的所有单元测试,并以多种格式输出数据。 Bamboo能够解析junit测试输出,这是一件好事,不幸的是,unit输出解析器创建了一个名为.junit而不是.xml的文件。 Bamboo中的Junit Parser任务只能识别.xml文件,因此.junit文件必须重命名为.xml

要显示Bamboo测试,您需要添加一个 Junit Parser 任务并将其指向: xml_report / report.junit.xml

ather

Slather是一种工具,可以解析Xcode样式覆盖率数据(通过运行单元测试生成)并将结果输出为cobertura文件,然后可以将其转换为竹子可以读取的三叶草格式。

 污点覆盖率-x \ 
-输出目录xml_report \
--scheme /

Slather将生成一个用于将覆盖率数据解析为cobertura格式的文件,然后可以将其转换为三叶草格式。

Cobertura-三叶草变换

下一步是激活包含cobertura-clover-transfor命令行实用程序的虚拟环境,并将cobertura.xml文件转换为clover.xml文件。

 源〜/ devel / venv / bin / activate 
  cobertura-clover-transform xml_report / cobertura.xml> xml_report / clover.xml 

这是通过python虚拟环境中存在的cobertura-clover-transform操作完成的。

生成HTML输出

Bamboo将为您提供覆盖范围概述以及深入研究覆盖率报告的功能。 这些报告是存储在特定target / site / clover目录中的简单html文件。 您可以在此步骤中使用两种工具。

  mkdir -p目标/站点/三叶草 

您使用的哪种工具都需要确保target / site / clover目录在磁盘上

Xcov(选项1)

xcov工具创建了一个不错的HTML样式覆盖率报告-它们虽然漂亮,但功能却不如第二种选择。

  xcov -s DataAPI --output_directory目标/站点/三叶草 

平滑(选项2)

Slather显示的数据比xcov略多,因为它允许您深入研究源代码本身,但是我发现它的可读性比xcov略差

 污点覆盖范围--html \ 
-输出目录目标/站点/三叶草\
--scheme /

您的选择取决于您的选择。 两者都很有用,而且效果很好。

为三叶草配置竹子

最后一步是配置Bamboo以支持三叶草。 您可以通过设置以下选项来实现。

如果您在使用Bamboo导航到一个计划(而非构建版本)时一切正常,则将看到一个Clover选项卡

在计划摘要页面上。 在这里,您可以深入了解计划的承保范围信息。