gpt4 book ai didi

java - 从 Emma 代码覆盖率报告中过滤 junit 测试类

转载 作者:行者123 更新时间:2023-11-30 11:45:22 26 4
gpt4 key购买 nike

我有一个项目,其中我有 emma 代码覆盖脚本(使用 ant)正确构建和生成测试。

我有两个包裹 com.myproject.abc 测试.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。

最佳答案

您可以使用 JaCoCo像这样的库:

<target name="test" depends="test_preconditions" description="run junit tests">  
<mkdir dir="${test.data.dir}" />

<!-- Run all tests -->
<jacoco:coverage destfile="${test.data.dir}/jacoco.exec">
<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>
</junit>
</jacoco:coverage>

<!-- Generate Code Coverage report
See: http://www.eclemma.org/jacoco/trunk/doc/ant.html -->
<jacoco:report>
<executiondata>
<file file="${test.data.dir}/jacoco.exec" />
</executiondata>

<structure name="AntTestReporting">
<classfiles>
<fileset dir="${build.dir}">
<include name="**/*.class" />
<!-- Exclude classes necessary for testing only from the code coverage report-->
<exclude name="**/*Test*.class" />
<!-- Exclude inner classes -->
<exclude name="**/*$*.class" />
</fileset>
</classfiles>
</structure>

<html destdir="${coverage.reports.dir}" />
</jacoco:report>
</target>

您可以找到更多信息 here .

关于java - 从 Emma 代码覆盖率报告中过滤 junit 测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10356750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com