TestNG:RetryAnalyzer,如果测试在重试时成功,则跳过依赖组

时间:2015-07-28 18:26:24

标签: java testing testng integration-testing

我有RetryAnalyzerRetryListener。在RetryListener onTestFailure中,我检查测试是否可重试,如果是,我将结果设置为SUCCESS。我也这样做,testResult.getTestContext().getFailedMethods.removeResult(testResult)

我再次在侦听器的onFinish方法中删除失败的结果(有效条件有效)。

现在我遇到的问题是,我将每个测试类分成组。一个测试类执行WRITES,一个测试类执行READS。所以READs组取决于WRITES。

如果测试用例在第一次尝试时失败并且在重试时成功,则依赖组中的所有测试用例都是SKIPPED,尽管在onTestFailure方法中删除了失败的结果。

如果测试用例在重试时成功,是否有办法运行依赖方法?如果测试用例在所有尝试中都失败,我对该行为很好,所以我不想添加{{ 1}}关于每个依赖方法。

2 个答案:

答案 0 :(得分:2)

重试时,您应该从失败的测试中删除测试。并且plz一定要删除ITestResult对象。 (即结果,但不是result.getMethod())

@Override
public boolean retry(ITestResult result) {
    if (currentCount < maxRetryCount) {
        result.getTestContext().getFailedTests().removeResult(result);
        currentCount++;
        return true;
    }
    return false;
}

答案 1 :(得分:1)

我使用的是TestNG 6.8.7,将其升级到6.9.5。

之后,在重试时,TestNG将测试用例标记为SKIPPED。我只需创建一个Listener,它实现了TestListenerAdapter并覆盖onTestSkipped,如果有可用的重试,则从skippedTests中删除该方法。

result.getTestContext().getSkippedTests().removeResult(result.getMethod());

如果未将测试设置为FAILURE。现在它按预期工作。

相关问题