【问题标题】:How to only output one Pass/Fail result when test is rerun?重新运行测试时如何只输出一个通过/失败结果?
【发布时间】:2012-07-22 06:27:49
【问题描述】:

我在 TestNG 中使用 IRetryAnalyzer 类来重新启动失败的测试(最多 5 次尝试)。现在,如果我运行一个测试,它在通过之前失败了 3 次,它会说:

测试运行:4,失败:3,错误 0,跳过 0。

我希望结果显示的是:

测试运行:1,失败:0,错误 0,跳过 0。

基本上,我不希望它算作失败,除非它全部 5 次重新运行都失败。我该怎么做?

【问题讨论】:

  • 为什么测试失败了?

标签: java unit-testing testng reportng


【解决方案1】:

由于没有人回复,我试试看。

只是我在阅读您的帖子时产生的随机想法,而我正在寻找解决问题的方法......

您可以通过ITestResult result@AfterTest 方法中获得测试结果

@AfterMethod
public void AfterMethod_CheckForFailure(ITestResult result, Method m)

当带有@Test 注释的方法完成时调用@AfterMethod。 能够从具有static 成员的static 类中读取当前迭代 如果是<5,则使用

result.setStatus(ITestResult.SUCCESS); // or what ever status you want
setCurrentTestResult(result);

不知道这是否可行,但在我看来它可以 :) 祝你好运

【讨论】:

【解决方案2】:

我刚刚完成了这件事,我是如何做到的,我认为上次成功之前的一切都是成功的。我这样做是为了允许 3 次重新运行,这是我使用的代码:

import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.Reporter;

public class RetryAnalyzer implements IRetryAnalyzer {
  private int count = 0;
  private int maxCount = 2;

  @Override
  public boolean retry(ITestResult result) {
    if (!result.isSuccess()) {
      if (count < maxCount) {
        count++;
        result.setStatus(ITestResult.SUCCESS);
        String message = Thread.currentThread().getName() + ": Error in " + result.getName() + " Retrying "
            + (maxCount + 1 - count) + " more times";
        System.out.println(message);
        Reporter.log(message);
        return true;
      } else {
        result.setStatus(ITestResult.FAILURE);
      }
    }
    return false;
  }
}

这里的关键是在我还在重试的时候,我把结果设置为成功

result.setStatus(ITestResult.SUCCESS)

当尝试已经完成但仍然失败时,将其设置为失败

result.setStatus(ITestResult.FAILURE);

【讨论】:

  • 这对你真的有用吗? TestNG 6.8.8 不适用于我。 Cedric 说它并不意味着或保证会起作用:groups.google.com/d/msg/testng-users/J-kA6mD73i0/rc0vNTyygy0J
  • @Fletch 老实说,我不记得了。我不在这方面工作,也无法再访问它。但是,我确实记得我最终将这个解决方案扔到了窗外。我不记得为什么。对不起。
  • 是的,我刚去了 JUnit - 它有一个更好、更简单的方法来做到这一点。
猜你喜欢
  • 2019-07-12
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
相关资源
最近更新 更多