我有RetryAnalyzer
和RetryListener
。在RetryListener
onTestFailure
中,我检查测试是否可重试,如果是,我将结果设置为SUCCESS。我也这样做,testResult.getTestContext().getFailedMethods.removeResult(testResult)
。
我再次在侦听器的onFinish
方法中删除失败的结果(有效条件有效)。
现在我遇到的问题是,我将每个测试类分成组。一个测试类执行WRITES,一个测试类执行READS。所以READs组取决于WRITES。
如果测试用例在第一次尝试时失败并且在重试时成功,则依赖组中的所有测试用例都是SKIPPED,尽管在onTestFailure
方法中删除了失败的结果。
如果测试用例在重试时成功,是否有办法运行依赖方法?如果测试用例在所有尝试中都失败,我对该行为很好,所以我不想添加{{ 1}}关于每个依赖方法。
答案 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。现在它按预期工作。