在testng中,可以通过以下方法来实现在不使用listener的情况下重新运行套件:
示例代码如下:
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class RetryAnalyzer implements IRetryAnalyzer {
private int retryCount = 0;
private static final int MAX_RETRY_COUNT = 3;
@Override
public boolean retry(ITestResult result) {
if (retryCount < MAX_RETRY_COUNT) {
retryCount++;
return true;
}
return false;
}
}
在测试方法上添加@RetryAnalyzer注解:
@Test(retryAnalyzer = RetryAnalyzer.class)
public void testMethod() {
// 测试方法的代码
}
示例代码如下:
@DataProvider(name = "testData")
public Object[][] testData() {
return new Object[][]{
{"data1"},
{"data2"},
{"data3"}
};
}
@Test(dataProvider = "testData")
public void testMethod(String data) {
// 测试方法的代码
}
在这种情况下,测试方法会根据提供的测试数据进行多次运行。
示例代码如下:
public class RetryUtils {
private static final int MAX_RETRY_COUNT = 3;
public static void retry(Runnable testMethod) {
int retryCount = 0;
while (retryCount < MAX_RETRY_COUNT) {
try {
testMethod.run();
break;
} catch (Throwable e) {
retryCount++;
}
}
}
}
// 在测试方法中调用重试工具类
@Test
public void testMethod() {
RetryUtils.retry(() -> {
// 测试方法的代码
});
}
以上是在testng中不使用listener重新运行套件的几种方法,根据具体的需求选择合适的方法来实现测试方法的重新运行。
领取专属 10元无门槛券
手把手带您无忧上云