0

几天前我第一次开始使用 TESTNG。

我使用 IRetryAnalyzer 接口实现了一个重试分析器,该接口重试失败的测试方法最多 3 次。

我有一个名为 retryInvoker() 的测试方法,它失败了两次,第三次成功了。

TestNG 报告这种情况的方式是 3 次单独的测试运行,其中 2 次失败,1 次成功,实际上是正确的。尽管我只是希望将其捕获为单个测试运行,但最终成功(如果它在允许的最大重试次数结束之前完成,在本例中为 3 次)。或者即使在 3 次重试后没有成功,我希望将其报告为失败的单个测试运行,而不是 4 次单独的测试运行,所有这些都失败了。

有这方面的线索吗?

4

1 回答 1

0

您可以尝试此SO answer中建议的方法,从测试上下文中删除重复项,以防在失败或通过的测试中发现相同的方法:

@Overrride
public void onFinish(ITestContext context) {
    Iterator<ITestResult> failedTestCases = context.getFailedTests().getAllResults().iterator();
    while (failedTestCases.hasNext()) {
        System.out.println("failedTestCases");
        ITestResult failedTestCase = failedTestCases.next();
        ITestNGMethod method = failedTestCase.getMethod();
        if (context.getFailedTests().getResults(method).size() > 1) {
            System.out.println("failed test case remove as dup:" + failedTestCase.getTestClass().toString());
            failedTestCases.remove();
        } else {
            if (context.getPassedTests().getResults(method).size() > 0) {
                System.out.println(
                        "failed test case remove as pass retry:" + failedTestCase.getTestClass().toString());
                failedTestCases.remove();
            }
        }
    }
}
于 2018-05-17T08:42:40.943 回答