重新运行失败的测试脚本“完全”使用JUnit(Re-run failed Test Script &

2019-09-21 00:41发布

我找到了一些解决方案,重新运行在这个论坛未能@Test 如何立即重新运行失败的JUnit测试? 。 在我来说,我执行命令行测试。 我想如果它不能重新运行完整的测试。 下面给出我的测试脚本,模板,我想重新运行一切(从开始到结束),如果失败

@BeforeClass
public static void Start(){
...
}

@Test
public void Test_One(){
...
}

@Test
public void Test_Two(){
...
}

@AfterClass
public static void End(){
...
}

我会在结束()方法来知道我的测试脚本已失败。 如果失败了,我想运行一切像

@BeforeClass
@Test (all @Test)
@AfterClass

是否有可能使用JUnit? 我不知道如果我使用的模板是正确的:(

Answer 1:

JanakiL,这是一个非常好的问题。 我试图找到一些解决办法,但我没找到这个任务干净的解决方案。 我只能建议做一些变通方法,最终会奏效。 因此,为了重新运行套件你需要做以下步骤:

  1. 你需要以完成整个套件创建@ClassRule。 所有的套件,您可以重试使用下面的代码:

    公共类Retrier实现TestRule {

     private int retryCount; private int failedAttempt = 0; @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { base.evaluate(); while (retryNeeded()){ log.error( description.getDisplayName() + " failed"); failedAttempt++; } } 

    }

retryNeeded() - 方法,决定是否需要做重试或不

这将重试,所有测试在您的套房。 该重试@AfterClass方法后,会走的很重要的事情。

如果你需要有“绿建”成功的重试后,你需要写一堆的另一个悲观的代码。

  1. 您需要创建@rule,不会允许“发布”失败的结果。 作为例子:

public class FailedRule extends TestWatcher {

 @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { List<Throwable> errors = new ArrayList<Throwable>(); try { base.evaluate(); } catch (AssumptionViolatedException e) { log.error("", e.getMessage()); if (isLastRun()) { throw e; } } catch (Throwable t) { log.error("", t.getMessage()); if (isLastRun()) { throw t; } } }; }; } } 

isLastRun() - 方法,以验证它是否是最后的运行和故障测试只有在情况下,IR是最后一次运行。

只有最后的重试需要发布,以纪念您测试失败,打造“红色”。 3.最后,在您的测试类,你需要做的注册两个规则:

 @Rule public FailedRule ruleExample = new FailedRule (); @ClassRule public static Retrier retrier = new Retrier (3); 

在Retrier你可以通过尝试重试的次数。

我希望有人能提出更好的解决方案!



Answer 2:

更灵活的解决方案是编写定制的运行。 我在下面的帖子中描述这样的回答:

如何立即重新运行失败的JUnit测试?



Answer 3:

使用Eclipse,在JUnit视图中,你有一个按钮“重新运行试验 - 失败第一次”

您还可以看到这样的回答: 如何立即重新运行失败的JUnit测试?



文章来源: Re-run failed Test Script 'completely' using JUnit
标签: junit