我使用 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}" /
to pathelement location="${build.test.classes.dir}" /
,html 报告中显示了一些覆盖范围(尽管在错误的类中,但它不应该在测试类中,只是为了表明环境和 .jar 位置设置正确)。
然而,当我把它改回pathelement location="${build.classes.dir}" /
,我总是得到 0% 的覆盖率。
fwiw,当检测文件夹确实包含检测类时${build.instrumented.dir}
(这些类比${build.classes.dir}
地点)。是的,我删除后重试了cobertura.ser
从上一次运行开始。
我能知道出了什么问题吗?
Cheers,
片段build.xml
in a -ejb
folder.
<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 https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference
另外,最好将检测类保存在单独的文件夹中,并为测试类指定不同的文件夹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)