2010-09-11 92 views
3

我使用Cobertura 1.9.3和NetBeans 6.8,Ant 1.7.1和JDK 1.6.0_21与-WAR和EJB,JUnit 4测试一起运行。Cobertura显示0%的覆盖率

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

但是,当我将其更改回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

我还在版本控制系统上,因此我在NetBeans中选中了“使用共享库专用文件夹”选项,以及“复制服务器JAR文件到库文件夹”选项。我有以前的问题,我没有导入相关的图书馆,但这似乎不是一个图书馆问题... – gkw 2010-09-12 00:09:02

+0

请参阅http://techo-ecco.com/blog/testng-with-cobertura/关于如何正确配置它 – 2010-12-08 06:04:07

回答

0

当你0%的覆盖率是

  • 当你拥有的唯一情况没有正确设置你的类路径,你的测试是 针对非仪表代码运行,或者,
  • 您的.ser(元数据)文件已过时,无论何时您构建/重建代码,都应该再次删除现有的元数据文件和文档。

在这里看到一个很好的例子在类路径https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

而且,这是一个好主意,让仪表类在一个单独的文件夹,以及指定不同的文件夹,测试类。

相关问题