一尘不染

TestNG retryAnalyzer仅在方法@Test中定义时起作用,而在类的@Test中不起作用

selenium

这按预期工作,测试失败(由于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批注。

所以应该是可能的,还是我期望得到错误的结果?


阅读 459

收藏
2020-06-26

共1个答案

一尘不染

我的解决方案是为该方法中的所有方法设置一个retryAnalyzer
@BeforeSuite。但是不要在beforeMethod中设置它,因为这样每次调用时都会使用新的counter => endless
loop重新创建它。

@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) {
     TestRepeat testRepeat = new TestRepeat();
     for (ITestNGMethod method : context.getAllTestMethods()) {
         method.setRetryAnalyzer(testRepeat);
     }
}
2020-06-26