我的一个项目,现在正在使用JUnit作为一个框架来测试工程数据(参考:最后一个问题Creating a Java reporting project -- would like to use JUnit and Ant but not sure how)不要重复运行多个JUnit测试 - 如果故障发生一次
由于图片(ERR一个代码块),讲述了一个1000分的话,那么让我贴我的循环:
JUnitCore junit = new JUnitCore();
RunListener listener = new RunListener();
junit.addListener(listener);
[...]
for (AbstractFault fault : faultLog) {
theFault = fault;
Result result = junit.run(GearAndBrakeFaultLogReports.class);
for (Failure f : result.getFailures()) {
output.println(log.getName());
output.println(fault.getName());
output.println(HelperFunctions.splitCamelCase(f.getDescription()
.getMethodName()));
output.println(f.getMessage());
output.println();
}
}
正如你所看到的,我运行的是“junit.run”许多次(每个故障日志中)。但是,如果我的任何一个测试失败(),我不想重复该测试。换句话说,如果日志中有50个故障,并且在故障#1中测试失败,我不想在我正在循环的49个未来故障中尝试该测试。
下面是一个例子测试:
private static boolean LeftMLGDownTooLongFound = false;
@Test
public final void testLeftMLGDownTooLong() {
if (!LeftMLGDownTooLongFound
&& handleLDGReportFaults(false)
&& theFault.getName().equals(FaultNames.LDG_LG_DWN_TIME.toString())) {
assertNotGreater(getPCandRecNum(), 8f, ldgFault.getLeftStrutUpTime());
LeftMLGDownTooLongFound = true;
}
}
目前,做到这一点,我做的是设置为false在第一,但第一个断言后切换到真正的一个静态布尔。不知道这是否有效,但它的想法。我不想为每一个测试做这个(100个)。
在JUnitCore或Runner类中是否有任何公共函数,方法或方法可以将其标记,以便在调用fail()之后,测试永远不会运行多次?
这里只是一个评论,你可能想看看@Parameterized(https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/runners/Parameterized.java )。这可能比多次运行JUnitCore更好。 –