我在项目中有一些不稳定的测试,注释类似'@Test(retryAnalyzer = RetryAnalyzer.class)'(runner-TestNG)。在RetryAnalyzer类中实现了重试逻辑。
如何创建自定义注释,它将扩展@Test注释并具有retryAnalyzer的默认值? (@Test(retryAnalyzer = RetryAnalyzer.class) - > @UnstableTest)
感谢。
答案 0 :(得分:1)
这是一种简单的方法。
@UnstableTest
)org.testng.IAnnotationTransformer
的实现,其中您测试作为Method
方法的参数的transform()
对象,看看它是否有您的注释,如果是,则注入注释以下是它的样子:
标记片状注释标记片状测试
@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>
标记添加此侦听器。
应该这样做。