Voici un moyen facile de le faire.
- Créez votre annotation personnalisée (
@UnstableTest
dans votre cas)
- Construire une implémentation de
org.testng.IAnnotationTransformer
dans laquelle vous testez l'objet Method
qui se décline en tant que paramètre pour la méthode transform()
et voir si elle a l'annotation et si oui , puis injectez l'annotation.
Voilà comment cela peut ressembler à:
L'annotation marqueur qui marque les tests floconneux
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({METHOD})
@interface UnstableTest {}
Le transformateur d'annotation
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);
}
}
Maintenant, ajoutez cet écouteur à l'aide le <listeners>
tag.
Cela devrait faire l'affaire.