我们使用构建链设置 TeamCity 构建,以便我们的单元测试和集成测试可以在提交触发时并行运行:
- 构建链 - 取决于:
- 单元测试
- 集成测试
我正在寻找一种方法,可以组合/合并构建链中单元和集成测试生成的覆盖率数据,以便我们可以更好地了解有多少实际代码由两者组合覆盖。
接下来的计划是能够监控已提交代码覆盖率的变化,如果百分比下降,则可能会导致构建失败!
最佳答案
我已经设置了“构建链”目标,以便单元和集成目标中的覆盖文件(*.em、*.ec)可供使用。
我专门为构建链目标创建了一个 ant 构建文件(在 emma doco 的帮助下!):
<project name="coverage-merge" basedir="." default="all">
<!-- directory that contains emma.jar and emma_ant.jar: -->
<property name="emma.dir" value="${basedir}/lib"/>
<property name="coverage.dir" location="${basedir}/coverage"/>
<path id="emma.lib">
<pathelement location="${emma.dir}/emma-teamcity-3.1.1.jar"/>
<pathelement location="${emma.dir}/emma_ant-2.0.5312.jar"/>
</path>
<taskdef resource="emma_ant.properties" classpathref="emma.lib"/>
<target name="all" depends="-report"/>
<target name="-report">
<emma>
<report sourcepath="${src.dir}" sort="+block,+name,+method,+class"
metrics="method:70,block:80,line:80,class:100">
<infileset dir="${coverage.dir}" includes="**/*.em, **/*.ec"/>
<!-- for every type of report desired, configure a nested
element; various report parameters
can be inherited from the parent <report>
and individually overridden for each report type:
-->
<txt outfile="${coverage.dir}/coverage.txt" depth="package"
columns="class,method,block,line,name"/>
<xml outfile="${coverage.dir}/coverage.xml" depth="package"/>
<html outfile="${coverage.dir}/coverage.html" depth="method"
columns="name,class,method,block,line"/>
</report>
</emma>
</target>
</project>
...它将所有覆盖率文件合并到一个报告中!
report
的 metrics
参数设置 html 报告的突出显示阈值,以便低于阈值的包和文件的百分比以红色突出显示。
修改 xml 输出将允许我使用类似 andariel 的内容对结果运行 xpath,然后在未满足阈值时强制构建失败!
关于java - 我可以合并来自单元和集成测试目标的 Emma 覆盖率数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910969/