我有一个项目,我有 emma 代码覆盖脚本(使用 ant)正确构建和生成测试。
我有两个包 com.myproject.abc test.com.myproject.abc
所有的 junit 测试都在 test.com.mywebsite.abc 包中。我的目标是不在报告中包含 test.com.myproject.abc 包(coverage.xml)。我已阅读有关覆盖过滤器的 emma 文档并查看了其他几个示例,但如果不将 junit 测试包含在仪器中,则无法使其正常工作。
如果我在检测目标中包含过滤器......它不会检测用于 junit 测试的 junit 类。结果是 classNotFoundException。
这是我的代码。
<target name="emma-instrument" depends="clean" description="instruments the code">
<emma enabled="true">
<instr instrpath="${classes}" destdir="${emma.instr.dir}"
metadatafile="${emma.coverage.dir}/coverage.emma" merge="true" >
<filter excludes="test.com.myproject.abc"/>
</instr>
</emma>
</target>
当检测发生时,它将所有检测类移动到 emma/instrumentation - 它包含在类路径中。
<target name="test" depends="test_preconditions" description="run junit tests">
<junit fork="yes" printsummary="yes" haltonfailure="yes">
<classpath refid="test.classpath" />
<formatter type="plain" usefile="false" />
<batchtest>
<fileset dir="${classes}">
<include name="**/*Test*"/>
</fileset>
</batchtest>
<jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
<jvmarg value="-XX:-UseSplitVerifier"/>
</junit>
</target>
所以重复一遍 - 是否可以从 Emma Coverage 报告中排除 JUNIT 测试?我需要改变什么?提前致谢。
我正在使用 emma 2.1(代码覆盖率)、java 和 ant。