我正在关注几个不同的网站,解释如何使用RetryAnalyzer(他们都说基本相同的东西,但我检查了几个,看看是否有任何区别)。我像他们在样本中那样实现了,故意在第一次运行时导致失败(最终成为唯一的运行)。尽管失败了,但测试没有重复。我甚至在分析仪的第一行(res = false)放置了一个断点。从未受到打击。我告诉它尝试3次,但它根本没有重试。我错过了什么吗? 我的示例如下:是否与设置计数器= 0有关?但是“res = false”至少应该被击中?
public class RetryAnalyzer implements IRetryAnalyzer {
int counter = 0;
@Override
public boolean retry(ITestResult result) {
boolean res = false;
if (!result.isSuccess() && counter < 3) {
counter++;
res = true;
}
return res;
}
}
和
@Test(dataProvider = "dp", retryAnalyzer = RetryAnalyzer.class)
public void testA(TestContext tContext) throws IOException {
genericTest("A", "83701");
}
测试通常会通过。我故意导致它失败但它没有重试。我错过了什么吗?
=============================================== 默认套件
答案 0 :(得分:0)
尝试将alwaysRun = true
添加到测试方法装饰器中。
@Test(dataProvider = "dp", retryAnalyzer = RetryAnalyzer.class, alwaysRun = true)
public void testA(TestContext tContext) throws IOException {
genericTest("A", "83701");
}
此外,在重试之前,您可能需要重新启动驱动程序实例,以便开始使用测试。否则,您的第二次运行将在同一浏览器实例中执行。
通过重新安装浏览器驱动程序,只需执行driver.Quit()
。
答案 1 :(得分:0)
RetryAnalyzer类必须是公共的。同样,如果它是一个内部类,则应该是静态的。 TestNg默默地忽略了retryAnalyzer。