testNG-失敗用例重跑方法探究
阿新 • • 發佈:2019-01-04
實現IRetryAnalyzer類,重寫其中的retry方法
public class TestNGRetry implements IRetryAnalyzer { private int retryCount = 1; private static final int maxRetryCount = 3; @Override public boolean retry(ITestResult result) { if (retryCount<=maxRetryCount){ retryCount++;return true; } return false; } public void reSetCount(){ retryCount=1; } }
在測試方法上面 @Test(retryAnalyzer= TestNGRetry.class)
就可以執行了。
可以寫個監聽器,放到xml配置裡面,這樣所有的測試用例都能用這個重試方法了
public class RetryListener implements IAnnotationTransformer { @Overridepublic void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { IRetryAnalyzer retryAnalyzer = annotation.getRetryAnalyzer();//獲取到retryAnalyzer的註解 if (retryAnalyzer == null){ annotation.setRetryAnalyzer(TestNGRetry.class); } } }
配置檔案 <?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" parallel="false" thread-count="2"> <listeners> <listener class-name="chongshi.tesng.TestRunnerListener" /> <listener class-name="chongshi.tesng.RetryListener"/> </listeners> <test name="Test"> <classes> <class name="chongshi.tesng.New"/> </classes> </test> <!-- Test --> </suite> <!-- Suite -->
測試函式
這樣就可以完成了所有測試用例的重試工作。
可以加到我們的測試中使用了。