2

テストを正しく構築および生成する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を使用しています。

4

1 に答える 1