Testng: IAnnotationTransformer wird nicht ausgeführt, wenn es als @Listeners angegeben wird

Erstellt am 17. Sept. 2013  ·  7Kommentare  ·  Quelle: cbeust/testng

IAnnotationTransformer funktioniert nur, wenn in der Suite-XML-Datei mit . angegeben. Ich möchte, dass der Transformer auch ausgeführt wird, wenn er in der @Listener- Anmerkung angegeben ist

Beispiel:

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

Hilfreichster Kommentar

Aus der Dokumentation: (http://testng.org/doc/documentation-main.html)

 Die Annotation @Listeners kann jede Klasse enthalten, die org.testng.ITestNGListener mit Ausnahme von IAnnotationTransformer und IAnnotationTransformer2 erweitert. Der Grund dafür ist, dass diese Listener sehr früh im Prozess bekannt sein müssen, damit TestNG sie zum Umschreiben Ihrer Anmerkungen verwenden kann. Daher müssen Sie diese Listener in Ihrer Datei testng.xml angeben. 

Alle 7 Kommentare

Warum wurde dieses Thema geschlossen? Das Problem ist lebendig (Vers 6.8.21).

Aus der Dokumentation: (http://testng.org/doc/documentation-main.html)

 Die Annotation @Listeners kann jede Klasse enthalten, die org.testng.ITestNGListener mit Ausnahme von IAnnotationTransformer und IAnnotationTransformer2 erweitert. Der Grund dafür ist, dass diese Listener sehr früh im Prozess bekannt sein müssen, damit TestNG sie zum Umschreiben Ihrer Anmerkungen verwenden kann. Daher müssen Sie diese Listener in Ihrer Datei testng.xml angeben. 

Sieht so aus, als ob das Thema noch am Leben ist

Es war von Anfang an kein Thema. Die Javadocs, die ich glaube explizit aufrufen
heraus, dass IAnnotationTransformer nicht über einen @Listeners injiziert werden kann
Anmerkung.
​TestNG funktioniert in diesem Fall wie geplant.​

Hallo,
Wir könnten also den IAnnotation Transformer nur in der Datei testng.xml als Listener hinzufügen, nicht in der Annotation @Listener, oder?

Änderungshinweis besagt, dass @Listeners für IAnnotationTransformer seit Version

@ChenaLee -

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen