为什么Junit测试只支持不完整的fork替换?

时间:2011-11-23 01:15:29

标签: java ant junit fork

我注意到Junit batchtest允许覆盖junit的formode参数。非常好。

然而,在进一步检查时 - 批量测试似乎不支持“forkmode”标志?

这似乎很奇怪。这意味着overriden选项与junit fork选项的功能不同。

这是故意的,如果是这样,为什么?

1 个答案:

答案 0 :(得分:2)

根据JUnit Ant task documentation,您无法覆盖batchtest中的forkmode参数。

通常你会像这样使用forkmode选项:

<junit printsummary="yes" 
       fork="yes" forkmode="perBatch" 
       haltonfailure="${halt.on.test.failure}"
       failureproperty="test.failed">
    <classpath refid="test.classpath"/>
    <syspropertyset refid="junit.properties"/>
    <jvmarg value="${test.locale}"/>
    <jvmarg value="-Xmx256M"/>
    <formatter type="plain"/>
    <batchtest todir="${reports.test}">
        <fileset dir="${src.test}">
           <include name="**/Test*.java"/>
           <exclude name="**/AllTests.java"/>
        </fileset>
    </batchtest>
</junit>

其中forkmode可以是“once”,“perTest”或“perBatch”。

“perBatch”选项用于为每个嵌套的<batchtest>创建VM。如果在<junit>中覆盖<batchtest>的“fork”,则会在单个VM中运行测试。

<batchtest>元素中没有额外的“forkmode”选项。您可以在junit元素中控制VM“分叉”模式。