TestNg失敗重試機制
阿新 • • 發佈:2019-02-14
reat return opera deb tom java ole 機制 ESS
TestNg提供了失敗重試接口IRetryAnalyzer,需要實現retry方法:
package com.shunhe.testngprac.retry;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
/**
* 設置testng用例失敗重試次數
* Created by shunhe on 2019/2/13.
*/
public class MyRetryAnalyzer implements IRetryAnalyzer {
private int retryCount = 0;
private final int MAX_RETRY_COUNT = 3;
TestNG中的@Test註解包含參數retryAnalyzer,可以在註解中給定重試分析器,如下:
TestNg程序化調用情況
需要實現接口IAnnotationTransformer中的transform方法,對未設置retryanalyzer的@test方法添加響應的retryanalyzer:
package com.shunhe.testngprac.retry;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.testng.IAnnotationTransformer;
import org.testng.IRetryAnalyzer;
import org.testng.annotations.ITestAnnotation;
/**
* 添加重試監聽器,如果測試方法中未添加重試分析器,則默認添加MyRetryAnalyzer作為重試分析器
* Created by shunhe on 2019/2/13.
*/
public class MyRetryListener implements IAnnotationTransformer {
在構造tesng執行對象時,添加響應的listener
package com.shunhe.testngprac.controller;
import java.util.ArrayList;
import java.util.List;
import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlSuite.ParallelMode;
import org.testng.xml.XmlTest;
/**
* Created by shunhe on 2019/2/13.
*/
public class TestNgController {
/**
* TestNG測試程序化調用
*/
public void executeTests() {
//構建testng.xml內存對象
try {
List<XmlSuite> suites = new ArrayList<XmlSuite>();
XmlSuite suite = new XmlSuite();
suite.setName("TestNG Retry Test");
//添加失敗重試
List<String> suiteListeners = new ArrayList<String>();
//添加重試監聽器
suiteListeners.add("com.shunhe.testngprac.retry.MyRetryListener");
suite.setListeners(suiteListeners);
//類級別的並發
suite.setParallel(ParallelMode.CLASSES);
suites.add(suite);
XmlTest test = new XmlTest(suite);
test.setName("TestNG Retry Test");
//添加將要執行的用例
List<XmlClass> classes = new ArrayList<XmlClass>();
XmlClass testClass = new XmlClass("com.shunhe.testngprac.tests.DemoTest01");
classes.add(testClass);
test.setXmlClasses(classes);
//TestNG程序化調用
TestNG testNG = new TestNG();
testNG.setXmlSuites(suites);
testNG.run();
} catch (Exception e) {
System.out.println("測試用例執行失敗: " + e.getMessage());
e.printStackTrace();
}
}
public static void main(String[] args){
TestNgController testNgController = new TestNgController();
testNgController.executeTests();
}
}
TestNg失敗重試機制