TestNG 失败重试,动态绑定到所有测试方法
2016-05-17 23:36 yoogo 阅读(867) 评论(0) 编辑 收藏 举报对一个测试方法需要失败重试,只需实现 IRetryAnalyzer 接口,然后注册到测试方法:
public class Retry implements IRetryAnalyzer { int i = 0; int max = 4; @Override public synchronized boolean retry(ITestResult result) { return i++<max; } }
这里允许测试 fail 4次, 把它注册给测试方法:
@Test(retryAnalyzer = Retry.class) public void retryTest() throws InterruptedException { //test }
通常,在集成测试中,几乎所有测试方法都需要重试,可以通过监听器动态绑定:
public class RetryListener implements IAnnotationTransformer { @Override public void transform(ITestAnnotation testannotation, Class testClass, Constructor testConstructor, Method testMethod) { IRetryAnalyzer retry = testannotation.getRetryAnalyzer(); if (retry == null) { testannotation.setRetryAnalyzer(Retry.class); } } }
最后把监听器注册到 testng.xml 。
注意: 使用 testNG 6.9.10,亲测 6.9.6 重试接口有逻辑问题。