这是假设的,测试失败(由于haltTesting())并重复2次
public class A0001_A0003Test extends TestControl {
private Kunde kunde = Kunde.FR_WEHLITZ;
@Test(retryAnalyzer = TestRepeat.class, groups = {TestGroups.FAILED}, description = "verify adress")
public void testkundenDaten_Angaben() throws Exception {
bifiTestInitial();
testActions.selectKunde(kunde);
haltTesting();
}
}
但是因为我在一个类中有多个测试,我在类级别定义了repeatAnalyzer
@Test(retryAnalyzer = TestRepeat.class)
public class A0001_A0003Test extends TestControl {
private Kunde kunde = Kunde.FR_WEHLITZ;
@Test(groups = {TestGroups.FAILED}, description = "verify adress")
public void testkundenDaten_Angaben() throws Exception {
bifiTestInitial();
testActions.selectKunde(kunde);
haltTesting();
}
}
然后测试没有重复,文档说:
类级@Test注释的效果是使所有的 这个类的公共方法即使它们成为测试方法 没有注释。您仍然可以在方法上重复@Test注释 如果你想添加某些属性。
所以它应该是可能的,还是我期待错误的结果?
答案 0 :(得分:2)
您可以实现IAnnotationTransformer侦听器并注册侦听器cmd行或在配置文件中或在类级别。
public class MyAnnotationTransformer implements
IAnnotationTransformer {
@Override
public void transform(ITestAnnotation testAnnotation, Class clazz, Constructor testConstructor,
Method method) {
testAnnotation.setRetryAnalyzer(TestRepeat.class);
}
...
}
在班级注册:
@Listeners(value=MyAnnotationTransformer.class)
public class A0001_A0003Test extends TestControl {
...
}
答案 1 :(得分:1)
我的解决方案是为@BeforeSuite
方法中的所有方法设置retryAnalyzer。
但是不要在beforeMethod中设置它,因为它将使用新的counter =>重新创建每个调用。无尽的循环。
@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) {
TestRepeat testRepeat = new TestRepeat();
for (ITestNGMethod method : context.getAllTestMethods()) {
method.setRetryAnalyzer(testRepeat);
}
}