这按预期工作,测试失败(由于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批注。
所以应该是可能的,还是我期望得到错误的结果?
我的解决方案是为该方法中的所有方法设置一个retryAnalyzer @BeforeSuite。但是不要在beforeMethod中设置它,因为这样每次调用时都会使用新的counter => endless loop重新创建它。
@BeforeSuite
@BeforeSuite(alwaysRun = true) public void beforeSuite(ITestContext context) { TestRepeat testRepeat = new TestRepeat(); for (ITestNGMethod method : context.getAllTestMethods()) { method.setRetryAnalyzer(testRepeat); } }