我正在使用 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}
为什么 JaCoCo 坚持不分叉 JUnit 测试,除非我将fork
参数设置为字符串true
而不是设置为 equals 的属性true
?