IAnnotationTransformer solo funciona cuando se especifica en el archivo xml de la suite con
Ejemplo:
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.testng.IAnnotationTransformer;
import org.testng.annotations.ITestAnnotation;
public class TransformerImpl implements IAnnotationTransformer {
<strong i="9">@Override</strong>
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
System.out.println("Transform Annotation");
}
}
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners({ TransformerImpl.class })
public class AnnotationTest {
<strong i="12">@Test</strong>
public void run() {
System.out.println("run");
}
}
¿Por qué se cerró este problema? El problema está vivo (v. 6.8.21).
De la documentación: (http://testng.org/doc/documentation-main.html)
La anotación @Listeners puede contener cualquier clase que amplíe org.testng.ITestNGListener, excepto IAnnotationTransformer e IAnnotationTransformer2. La razón es que estos oyentes deben conocerse muy temprano en el proceso para que TestNG pueda usarlos para reescribir sus anotaciones, por lo tanto, debe especificar estos oyentes en su archivo testng.xml.
Parece que el problema sigue vivo
Para empezar, no fue un problema. Los Javadocs que creo llama explícitamente
que IAnnotationTransformer no se puede inyectar a través de @Listeners
anotación.
TestNG está funcionando según lo diseñado en este caso.
Hola,
Entonces, podríamos agregar IAnnotation Transformer como oyente solo en el archivo testng.xml, no en la anotación @Listener , ¿verdad?
La nota de cambios dice que @Listeners es compatible con IAnnotationTransformer desde la versión 6.9.10. Sin embargo, todavía no me funcionó usando 6.9.10.
@ChenaLee : no es fiel a mi leal saber y entender. Creo que los javadocs lo hacen explícito.
Comentario más útil
De la documentación: (http://testng.org/doc/documentation-main.html)