オーバーライドされたメソッドIAnnotationTransformerインターフェイスのトランスフォームメソッドは、リスナーが@listenerアノテーションを使用して内部的に実装されているときに呼び出されません。 TestNG.xmlIAnnotationTransformerインターフェイスのオーバーライドされたトランスフォームメソッドが呼び出されない/実行されない
テストクラス
@Listeners(Annotation.AnnotationTransform.class)
public class factory {
@
Test(priority = 1, invocationCount = 3)
public void t1() {
System.out.println("Method is t1, parameter is " + "one");
AssertJUnit.assertTrue(true);
}
@
Test(priority = 2)
public void t2() {
System.out.println("Method is t2, parameter is " + "two");
}
@
Test(priority = 3)
public void t3() {
System.out.println("Method is t3");
}
}
リスナクラス
public class AnnotationTransform implements IAnnotationTransformer, IRetryAnalyzer {
@Override
public void transform(ITestAnnotation annotation, Class testClass,
Constructor testConstructor, Method testMethod) {
if (testMethod.getName().equals("t1")) {
System.out.println("set data provider for " + testMethod.getName());
annotation.setInvocationCount(10);
} else if (testMethod.getName().equals("t3")) {
System.out.println("set data provider for " + testMethod.getName());
} else if (testMethod.getName().equals("t2")) {
System.out.println("Disable " + testMethod.getName());
annotation.setEnabled(false);
}
}
}
から実行するときには、「TestNGのテストとして実行」の変換方法を呼び出していないとして、上記のコードを実行して正常に動作している間 testNG.xmlファイルから 'TestNG Suiteとして実行'を実行すると問題ありません。
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false" >
<listeners>
<listener class-name="Annotation.AnnotationTransform" />
</listeners>
<test name="Test" preserve-order="true">
<classes>
<class name="Annotation.factory" />
</classes>
</test>
</suite>
ありがとう@Grasshopper、私は今問題を理解しています。私は非常に慎重にドキュメントを読む必要があると思う:P しかし、これは私たちにTestNG.xmlファイルを委任させるものです。 – RamaKrishna
問題ありません。私はいくつかの必要なポイントを得るので、任意のチャンスはあなたのために働いた答えをマークすることができます:)。ありがとう – Grasshopper
マーケティングのための適格ではありません15名の評判の下での – RamaKrishna