IAnnotationTransformer funktioniert nur, wenn in der Suite-XML-Datei mit . angegeben
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");
}
}
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 -
Hilfreichster Kommentar
Aus der Dokumentation: (http://testng.org/doc/documentation-main.html)