2017-09-25 181 views
0

我在項目中有一些不穩定的測試,像'@Test(retryAnalyzer = RetryAnalyzer.class)'(runner-TestNG)。在RetryAnalyzer類中實現了重試邏輯。測試NG註釋擴展

如何創建將擴展@Test註釋的自定義註釋,並且將具有retryAnalyzer的默認值? (@Test(retryAnalyzer = RetryAnalyzer.class) - > @UnstableTest)

謝謝。

回答

1

這是一個簡單的方法。

  • (你的情況@UnstableTest)創建自定義的註釋
  • 建設的org.testng.IAnnotationTransformer的實現,其中你測試進來作爲transform()方法的參數Method對象,看看它是否有你的註釋,如果是,然後注入註釋。

下面是它怎麼能是這樣的:

標記註釋,這標誌着片狀測試

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 
@Target({METHOD}) 
@interface UnstableTest {} 

註釋變壓器

public static class UnstableTestInjector implements IAnnotationTransformer { 

    @Override 
    public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) { 
     if (testMethod == null) { 
      return; 
     } 

     UnstableTest unstableTest = testMethod.getAnnotation(UnstableTest.class); 
     if (unstableTest == null) { 
      return; 
     } 
     annotation.setRetryAnalyzer(TryAgain.class); 
    } 
} 

現在,使用添加此監聽器<listeners>標籤。

應該這樣做。