重新运行失败的测试脚本';完全';使用JUnit
我在这个论坛上找到了一些解决方案来重新运行failed@Test。在我的例子中,我从命令行执行测试。如果失败,我想重新运行完整的测试。下面给出的是我的测试脚本模板,如果失败,我想重新运行一切(从开始到结束)重新运行失败的测试脚本';完全';使用JUnit,junit,Junit,我在这个论坛上找到了一些解决方案来重新运行failed@Test。在我的例子中,我从命令行执行测试。如果失败,我想重新运行完整的测试。下面给出的是我的测试脚本模板,如果失败,我想重新运行一切(从开始到结束) @BeforeClass public static void Start(){ ... } @Test public void Test_One(){ ... } @Test public void Test_Two(){ ... } @AfterClass public stati
@BeforeClass
public static void Start(){
...
}
@Test
public void Test_One(){
...
}
@Test
public void Test_Two(){
...
}
@AfterClass
public static void End(){
...
}
如果测试脚本失败,我将了解End()方法。如果失败了,我想像这样运行一切
@BeforeClass
@Test (all @Test)
@AfterClass
JUnit可以吗?
我不确定我使用的模板是否正确:(使用Eclipse,在Junit视图中,您有一个按钮“重新运行测试-首先失败” 你也可以看到这个答案:JanakiL, 这是一个非常好的问题。我试图找到一些解决方案,但我没有为这项任务找到干净的解决方案。 我只能建议做一些最终会奏效的变通办法。 因此,为了重新运行套件,您需要执行以下步骤:
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++;
}
}
}
公共类FailedRule扩展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;
}
}
};
};
}
}
在重试器中,您可以传递尝试重试的次数
我希望有人能提出更好的解决方案!更灵活的解决方案是编写自定义runner。 我在下面的帖子中描述了这个答案:
我从命令行运行我的测试脚本。因此我不能使用eclipse重新运行。我确实参考了您提到的帖子。就像我之前提到的帖子一样,该链接讨论了如何单独重新运行失败的@test。但是我想运行BeforeClass>test>AfterClass。感谢user1459144提供的解决方案。
@Rule
public FailedRule ruleExample = new FailedRule ();
@ClassRule
public static Retrier retrier = new Retrier (3);