我有大约150个测试。当我运行它们时,我总是有大约2-5%的破损测试,并且总是有不同的测试......
我想要的是:运行测试一次,如果有破坏的测试,maven重新运行它们然后我可以重新生成带有更改的报告:它将只是通过和失败的测试
有可能吗? 我该怎么做?
我使用Java + Maven + JUnit)
答案 0 :(得分:2)
Allure没有运行你的测试,它只显示测试结果。因此,您几乎没有选择重新运行失败的测试:
使用rerunFailingTestsCount
中的maven surefire plugin
选项。如果此选项设置surefire将在失败后立即重新运行失败的测试。有关详细信息,请参阅docs。
在片状测试中使用自定义jUnit重试规则:
public class RetryRule implements TestRule {
private int attempts;
private int delay;
private TimeUnit timeUnit;
public RetryRule(int attempts, int delay, TimeUnit timeUnit) {
this.attempts = attempts;
this.delay = delay;
this.timeUnit = timeUnit;
}
@Override
public Statement apply(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
Throwable e = null;
for (int i = 0; i <= attempts; i++) {
try {
base.evaluate();
return;
} catch (Throwable t) {
Thread.sleep(timeUnit.toMillis(delay));
}
}
throw e;
}
};
}
}
并将其添加到每个片状测试中:
@Rule
public RetryRule retryRule = new RetryRule(2, 1, TimeUnit.SECONDS);
您可以找到有关jUnit规则here的更多信息。
答案 1 :(得分:0)
如果您想在重新运行Allure报告后清理重复测试,那么您可以参考此回购 - 仍在进行中但基本功能正常。目前它清除了由TesnNG + Allure生成的重复测试!!