Testng: IAnnotationTransformer no se ejecuta cuando se especifica como @Listeners

Creado en 17 sept. 2013  ·  7Comentarios  ·  Fuente: cbeust/testng

IAnnotationTransformer solo funciona cuando se especifica en el archivo xml de la suite con. Me gustaría que también ejecute el transformador cuando se especifique en la anotación @Listener

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");
    }
}

Comentario más útil

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. 

Todos 7 comentarios

¿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.

¿Fue útil esta página
0 / 5 - 0 calificaciones