antタスクによって起動されたjunitテストでcodecoverageとjacocoを統合しようとしています。私のクラスパスがかなり長くフォークがクラッシュするので、ジャココが私にジュニットをフォークさせるという事実は、私にいくつかの問題を与えています。 私はクラスパスをjarファイルに追加するためにmanifestclasspathを使用しています。新しいJarをVMへの引数として送信しますが、動作していません。テストは実行されますが、すべてClassNotFoundExceptionが返されます。 ここでは、私のantプロセスをどのように設定したのかを示します。JUNITを実行するためにManifestクラスパスを使用しているAnt ClassNotFoundException
<path refid="bin.classpath"/>
bin.classpathには、.jarファイルに入れる必要があるすべてのパスが含まれています。
<target name="run-unit-tests" depends="init" description="Runs all the unit tests">
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="jacocoant.jar" />
</taskdef>
<manifestclasspath property="binjar" jarfile="binManifest.jar">
<classpath refid="bin.classpath" />
</manifestclasspath>
<jar destfile="manifestJars/binManifest.jar">
<manifest>
<attribute name="Class-Path" value="${binjar}" />
</manifest>
</jar>
<jacoco:coverage destfile="results/jacoco.exec" xmlns:jacoco="antlib:org.jacoco.ant">
<junit fork="true" reloading="false" showoutput="true">
<classpath>
<pathelement path="${projects.dir}/AntProject/manifestJars/binManifest.jar" />
</classpath>
<batchtest todir="${test.data.dir}" fork="true">
<fileset dir="${projects.dir}/ProjectFolder1/src" />
<fileset dir="${projects.dir}/ProjectFolder2/src" />
</batchtest>
</junit>
</jacoco:coverage>
</target>
のantタスクを実行しているときに私はコンソールログを見れば、私は私の新しい.jarファイルが送信されているかを確認することができます
-classpath''C:\Users\XXX\Project\AntProject\manifestJars\binManifest.jar;
を私はbinManifest.jarは私が見つけ作成開いた場合MANIFEST.MFファイルは、クラスパスプロパティ内のすべてのパスを../../Class1/bin ../../Class2/bin ../../ClassN/binの形式で格納します。しかし何らかの理由で私のクラスが見つからないため、すべてのテストが失敗します。私は何が欠けていますか?ありがとう。
パスは相対パス( '../../ Class1/bin')なので、作業ディレクトリが正しくない可能性があります。 – Godin
答えてくれてありがとう@Godin。私もそう思っていますが、絶対パスを入れたり、.jarファイルをルートフォルダに変更するためにmanifest.mfの内容を変更しようとしました。最初のケースではテストは同じエラーでクラッシュし、2番目のケースでは表示される相対パスはまったく同じでした –