Сейчас я нахожусь в проекте, который использует JUnit в качестве основы для тестирования инженерных данных (ссылка: последний вопрос Создание проекта создания отчетов Java -- хотелось бы использовать JUnit и Ant, но не знаю, как это сделать)
Поскольку изображение (ошибка блока кода) содержит 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;
}
}
В настоящее время для этого я создаю static bool, который сначала имеет значение false, но переключается на true после первого утверждения. Не уверен, что это работает, но это идея. Я не хочу делать это для каждого теста (100 из них).
Есть ли какая-либо общедоступная функция, метод или способ в классе JUnitCore или Runner, который я могу пометить, чтобы тест никогда не запускался более одного раза после вызова fail()?