2013-01-16 72 views
0

我米使用的Cobertura-1.9.4.1生成代码覆盖reports.First我将classpath设置为cobertura.jar并在lib文件夹以外的罐子。然后我执行cobertura-instrument.sh。 但在执行时,我得到了0类的错误加载信息。我给编译类的完整路径仍然无法对类进行测试。 那么,我错过了什么或者可能的原因是什么。在UNIX上使用的Cobertura生成代码覆盖报告

回答

0

您的意思是错误是在仪表期间,还是在运行测试后,覆盖率仍然显示为零?

这里的仪器(蚂蚁)的例子:

<target name="--coverage.instrument"> 
    <delete file="cobertura.ser"/> 
    <mkdir dir="${coverage.instrumented.dir}"/> 
    <cobertura-instrument todir="${coverage.instrumented.dir}"> 
     <fileset dir="${classes.main.dir}"> 
      <include name="**/*.class"/> 
      <exclude name="**/*Test.class"/> 
     </fileset> 
    </cobertura-instrument> 
</target> 

不要忘记,你(在蚂蚁junit任务如)测试时需要这个sysproperty:

<sysproperty key="net.sourceforge.cobertura.datafile" file="cobertura.ser"/> 

一旦的Cobertura设置一个仪表已经发生,执行的例子:

<target name="--test.unit"> 
    <mkdir dir="${temp.dir}/unit-tests"/> 

    <junit forkmode="perBatch" printsummary="yes" haltonfailure="no" haltonerror="no" 
      failureproperty="unit.tests.failed"> 

     <sysproperty key="net.sourceforge.cobertura.datafile" file="cobertura.ser"/> 
     <classpath refid="classpath.test.utest"/> 
     <formatter type="xml"/> 

     <batchtest fork="yes" todir="${temp.dir}/unit-tests"> 
      <fileset dir="${java.src.utest.dir}" includes="**/*Test.java"/> 
     </batchtest> 
    </junit> 

</target> 
+0

那么在检测过程中出现错误,因为cobertura.ser文件没有变化。错误是我得到的消息:找到2个文件到仪器和0个类到仪器。我试图测试的代码是编译java类。所以我不明白为什么cobertura不能测试代码。 – nikhil

+0

啊,我明白了。 。 。我很久以前就遇到过类似的情况,但现在记忆很模糊。 。我认为这是最新版本的Cobertura不喜欢JDK5。 。 。 (现在可能无关紧要)。 –

+0

我使用1.9.4.1版本,我尝试使用的java代码可能是使用jdk5开发的。那么你是否说我们正在使用的cobertura和jdk版本之间必须兼容。 java版本和cobertura版本之间还有什么关系,如何使用。如果我应该使用哪个jdk和java版本? – nikhil

0

我相信Cobertura的最新版本不适用于JDK5。强烈建议升级JDK。

相关问题