0

我正在使用 cobertura-1.9.4.1 生成代码覆盖率报告。首先,我将类路径设置为 cobertura.jar 和 lib 文件夹中的其他 jar。然后我执行 cobertura-instrument.sh。但是在执行时,我得到了关于 0 classes 的错误加载信息。我给出了编译类的完整路径,但它仍然无法检测这些类。那么,我错过了什么或可能的原因是什么。

4

2 回答 2

0

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

这是一个检测示例(使用 Ant):

<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>

不要忘记在测试时需要这个 sysproperty(例如在 Ant Junit 任务中):

<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>
于 2013-01-16T05:18:11.223 回答
0

我相信最近版本的 Cobertura 不能很好地与 JDK5 配合使用。强烈建议升级JDK。

于 2013-01-22T13:09:38.553 回答