私は Jacoco Junit タスクを使用しており、次のことを試しました。
<!-- run the junit tests -->
<echo>DEBUG: $${junit.fork} = "${junit.fork}"</echo>
<jacoco:coverage
destfile="${target.dir}/jacoco.exec"
append="false">
<junit fork="${junit.fork}" includeAntRuntime="true">
<classpath>
<pathelement path="${main.destdir}"/>
<pathelement path="${test.destdir}"/>
</classpath>
<classpath refid="test.classpath"/>
<formatter type="${junit.formatter.type}"/>
<batchtest todir="${junit.batchtest.todir}">
<fileset dir="${test.destdir}" />
</batchtest>
</junit>
</jacoco:coverage>
そして、以下を得ました:
test:
[echo] DEBUG: ${junit.fork} = "true"
[jacoco:coverage] Enhancing junit with coverage
BUILD FAILED
D:\build.xml:233: Coverage can only be applied on a forked VM
Total time: 6 seconds
D:\>
ご覧のとおり、${junit.fork}
プロパティは に設定されてtrue
おり、そのプロパティを で使用しました<junit fork="${junit.fork}"/>
。
ただし、そのプロパティを使用する代わりに、 を設定<junit fork="true">
するだけで問題なく動作します。
<jacoco:coverage
destfile="${target.dir}/jacoco.exec"
append="false">
<junit fork="true" includeAntRuntime="true">
<classpath>
<pathelement path="${main.destdir}"/>
<pathelement path="${test.destdir}"/>
</classpath>
<classpath refid="test.classpath"/>
<formatter type="${junit.formatter.type}"/>
<batchtest todir="${junit.batchtest.todir}">
<fileset dir="${test.destdir}" />
</batchtest>
</junit>
</jacoco:coverage>
プロパティant -d test
を使用するときに Java JVM がフォークしていることを確認するために実行しました。${junit.fork}
fork
パラメータをtrue
equals のプロパティではなく文字列に設定しない限り、JUnit テストはフォークされないと JaCoCo が主張するのはなぜtrue
ですか?