倾城:如何重新运行所有破碎的测试,然后生成报告

时间:2015-09-18 10:30:14

标签: maven testing allure

我有大约150个测试。当我运行它们时,我总是有大约2-5%的破损测试,并且总是有不同的测试......

我想要的是:运行测试一次,如果有破坏的测试,maven重新运行它们然后我可以重新生成带有更改的报告:它将只是通过和失败的测试

有可能吗? 我该怎么做?

我使用Java + Maven + JUnit)

2 个答案:

答案 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生成的重复测试!!

https://github.com/Esprizzle/allure-report-processor