私は cobertura-1.9.4.1 を使用してコード カバレッジ レポートを生成しています。まず、クラスパスを cobertura.jar および lib フォルダー内の他の jar に設定します。次に、cobertura-instrument.sh を実行します。しかし、実行すると、 0 classes にエラーがロードされた情報が表示されます。コンパイルされたクラスへの完全なパスを指定していますが、クラスをインストルメント化することはできません。それで、私が見逃しているもの、またはこれの考えられる理由は何ですか。
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>
テスト時 (Ant 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>
    于 2013-01-16T05:18:11.223   に答える
    
    
            0        
        
		
最近のバージョンの Cobertura は JDK5 ではうまく動作しないと思います。JDK のアップグレードを強くお勧めします。
于 2013-01-22T13:09:38.553   に答える