我现在在一个项目中,它使用 JUnit 作为框架来测试工程数据(参考:最后一个问题创建 Java 报告项目——想使用 JUnit 和 Ant,但不确定如何使用)
由于一张图片(错误的代码块)告诉了 1,000 个单词,所以让我粘贴我的循环:
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,但在第一个断言后切换为 true。不确定这是否有效,但它的想法。我不想为每一个测试(其中 100 个)都这样做。
JUnitCore 或 Runner 类中是否有任何公共函数、方法或方式可以标记它,以便在调用 fail() 后测试不会运行超过一次?