テストを正しく構築および生成するemmaコードカバレッジスクリプト(antを使用)を使用するプロジェクトがあります。
私は2つのパッケージcom.myproject.abctest.com.myproject.abcを持っています
すべてのjunitテストはtest.com.mywebsite.abcパッケージに含まれています。私の目標は、test.com.myproject.abcパッケージをレポート(coverage.xml)に含めないことです。カバレッジフィルターに関するemmaのドキュメントを読み、他のいくつかの例を確認しましたが、インストルメンテーションにjunitテストを含めないと機能しません。
インストルメンテーションターゲットにフィルターを含めると...junitテストに使用されるjunitクラスはインストルメントされません。結果はclassNotFoundExceptionです。
これが私のコードです。
<target name="emma-instrument" depends="clean" description="instruments the code">
<emma enabled="true">
<instr instrpath="${classes}" destdir="${emma.instr.dir}"
metadatafile="${emma.coverage.dir}/coverage.emma" merge="true" >
<filter excludes="test.com.myproject.abc"/>
</instr>
</emma>
</target>
インストルメンテーションが発生すると、インストルメントされたすべてのクラスがemma/instrumentationに移動します。これはクラスパスに含まれています。
<target name="test" depends="test_preconditions" description="run junit tests">
<junit fork="yes" printsummary="yes" haltonfailure="yes">
<classpath refid="test.classpath" />
<formatter type="plain" usefile="false" />
<batchtest>
<fileset dir="${classes}">
<include name="**/*Test*"/>
</fileset>
</batchtest>
<jvmarg value="-Demma.coverage.out.file=${emma.coverage.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
<jvmarg value="-XX:-UseSplitVerifier"/>
</junit>
</target>
繰り返しますが、JUNITテストをEmma Coverageレポートから除外することは可能ですか?何を変更する必要がありますか?前もって感謝します。
私はemma2.1(コードカバレッジ)、java、antを使用しています。