2011-11-23 36 views
0

我注意到Junit的batchtest允许覆盖junit的forkmode参数。那很好。为什么Junit测试仅支持不完整的覆盖叉?

但是,在进一步检查---看来batchtest不支持“forkmode”标志?

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

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

+0

你是否在谈论junit ant任务?这个问题还不清楚。 – oers

回答

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可能是因为存在 “一次”, “perTest” 或 “perBatch”。

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

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

+0

我不同意:使用perBatch测试一个批处理(与批处理一次相同),使用perTest测试另一个批处理是有意义的。 这将允许批量运行大多数测试,每批处理一个JVM,并且一个接一个地处理“有问题”的测试,并且所有测试都在同一个junit任务中。 更好的是,forkMode =“per100”或类似的会很好。每隔一段时间通过新的JVM清理一次,但不是每次测试。 – mgaert

相关问题