gpt4 book ai didi

netbeans - Cobertura 显示 0% 的覆盖率

转载 作者:行者123 更新时间:2023-12-01 13:55:55 26 4
gpt4 key购买 nike

我将 Cobertura 1.9.3 与 NetBeans 6.8、Ant 1.7.1 和 JDK 1.6.0_21 一起使用 -WAR、EJB、JUnit 4 测试。

当我将行 pathelement location="${build.classes.dir}"/ 更改为 pathelement location="${build.test.classes.dir}"/,在 html 报告中显示了一些覆盖率(虽然在错误的类中,但它不应该在测试类中,只是为了表明环境和 .jar 位置设置正确)。

但是,当我将它改回 pathelement location="${build.classes.dir}"/ 时,我总是得到 0% 的覆盖率。

首先,当检测文件夹在 ${build.instrumented.dir} 中包含检测类时(这些类比 ${build.classes.dir 中的类稍大) } 位置)。是的,我在从上一次运行中删除 cobertura.ser 后重试了。

请问有什么问题吗?

干杯,

-ejb 文件夹中的 build.xml 片段。

           <property environment="env"/>
<path id="cobertura.class.path">
<fileset dir="${build.dir}/../../lib">
<include name="**/*.jar"/>
</fileset>
</path>
<taskdef classpathref="cobertura.class.path" resource="tasks.properties"/>

<target name="-pre-compile-test">
<delete dir="${build.instrumented.dir}" />
<delete dir="${build.report.cobertura.dir}" />
<mkdir dir="${build.instrumented.dir}" />
<mkdir dir="${build.report.cobertura.dir}" />
<cobertura-instrument todir="${build.instrumented.dir}" classpathref="cobertura.class.path">
<ignore regex="org.apache.log4j.*" />
<includeClasses regex=".*" />
<excludeClasses regex=".*\.Test.*" />
<excludeClasses regex=".*\.TestSuite.*" />

<instrumentationClasspath>
<pathelement location="${build.classes.dir}" />
</instrumentationClasspath>
</cobertura-instrument>
</target>

<target name="-post-test-run">
<cobertura-report format="html" srcdir="${src.dir}" destdir="${build.report.cobertura.dir}"/>
<cobertura-report format="xml" srcdir="${src.dir}" destdir="${build.report.cobertura.dir}"/>
</target>

===

编辑:我还有以下设置:

        ...
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
build.instrumented.dir=${build.dir}/instrumented
build.report.dir=${build.dir}/report
build.report.cobertura.dir=${build.report.dir}/cobertura
...
javac.classpath=\
${libs.GlassFish_v3.classpath}:\
${file.reference.mysql-connector-java-5.1.13-bin.jar}
...
javac.test.classpath=\
${javac.classpath}:\
${file.reference.mysql-connector-java-5.1.13-bin.jar}:\
${libs.Libraries_Needed_For_JUnit.classpath}:\
${build.instrumented.dir}:\
${build.classes.dir}:\
${libs.junit_4.classpath}
...
run.test.classpath=\
${javac.test.classpath}:\
${file.reference.mysql-connector-java-5.1.13-bin.jar}:\
${libs.Cobertura.classpath}:\
${libs.Libraries_Needed_For_JUnit.classpath}:\
${libs.junit_4.classpath}:\
${build.test.classes.dir}
...
src.dir=${source.root}/java
test.src.dir=test

最佳答案

覆盖率为 0% 的唯一情况是

  • 如果你没有正确设置你的类路径,你的测试是针对非检测代码运行,或者,
  • 您的 .ser(元数据)文件已过时,无论何时构建/重建代码,都应删除现有的元数据文件并重新检测。

有关类路径的一个很好的示例,请参见此处 https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

此外,最好将检测类保存在单独的文件夹中,并为测试类指定不同的文件夹。

关于netbeans - Cobertura 显示 0% 的覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692354/

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