3

これは想定どおりに機能し、テストは (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();
    }
} 

しかし、1つのクラスに複数のテストがあるため、クラスレベルで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 アノテーションを繰り返すことができます。

それで、それは可能だったはずですか、それとも間違った結果を期待していますか?

4

2 に答える 2

2

私の解決策は、メソッド内のすべてのメソッドに retryAnalyzer を設定することでした@BeforeSuite。ただし、 beforeMethod に設定しないでください。これは、呼び出しごとに新しいカウンター => 無限ループで再作成されるためです。

@BeforeSuite(alwaysRun = true)
public void beforeSuite(ITestContext context) {
     TestRepeat testRepeat = new TestRepeat();
     for (ITestNGMethod method : context.getAllTestMethods()) {
         method.setRetryAnalyzer(testRepeat);
     }
}
于 2013-09-18T12:02:19.030 に答える