我想使用testng重新运行失败的测试,因此我有以下testng.xml:
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="suit1" configfailurepolicy="continue">
<listeners>
<listener class-name="PackageName.AnnotationTransformer"/>
</listeners>
<test name="all-tests">
<packages>
<package name="PackageName"/>
</packages>
</test>
</suite>
注解变压器等级:
public class AnnotationTransformer implements IAnnotationTransformer {
@Override
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
annotation.setRetryAnalyzer(MyRetryAnalyzer.class);
}
}
问题是testng运行以下测试,即使它有ignore注解:
@Test
@Ignore
public void testRetry() {
System.out.println("enter here");
}
retryanalyzer类:
public class MyRetryAnalyzer implements IRetryAnalyzer {
private int retryCount = 1;
private static final int maxRetryCount = 1;
@Override
public boolean retry(ITestResult iTestResult) {
if(retryCount <= maxRetryCount) {
System.out.println("retry test "+iTestResult.getName());
retryCount++;
return true;
}
else {
return false;
}
}
}
为什么testng运行被忽略的测试?
1条答案
按热度按时间ddrv8njm1#
@ignore应该在类或包上,而不是在方法上
testng允许您忽略所有@test方法:
在班级里
在特定的包中(或)
在包及其所有子包中
您可以添加
@Test(enabled=false)
方法,因此它将被忽略