TestNGをプログラムで(データプロバイダーを使用して)呼び出す必要があるプロジェクトに取り組んでいます。レポートで @Test メソッドの名前を取得していることを除いて、問題はありません。これは、多くのケースを処理するための一般的なものです。私たちが望むのは、レポートで意味のある名前を取得することです。
私はこれについて調査していて、3つの方法を見つけましたが、残念ながら、すべて失敗しています。
1) ITest を実装する
@Testメソッドに入るとすぐに、必要な名前を設定しています(試した3つの方法すべてで、これが名前の設定方法です)。この名前はgetTestName()から返されます。私が観察したのは、 @Test の前後に getTestName() が呼び出されていることです。最初はnullを返し(NullPointerExceptionを処理するために、nullの代わりに ""を返します)、後で正しい値を返します。しかし、これがレポートに反映されているとは思いません
編集:また、artdanil の提案に従って from@BeforeMethod という名前を設定してみました
2と3
どちらも、上記の 2 番目のリンクに記載されているソリューションに基づいています。
XmlSuite で setName をオーバーライドすることにより、取得しています
Exception in thread "main" java.lang.AssertionError: l should not be null
at org.testng.ClassMethodMap.removeAndCheckIfLast(ClassMethodMap.java:58)
at org.testng.internal.TestMethodWorker.invokeAfterClassMethods(TestMethodWorker.java:208)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:114)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
...
toString() をオーバーライドすることで、これらはログに (私のコメントとともに) 表示されますが、レポートには更新がありません
[2013-03-05 14:53:22,174] (Main.java:30) - calling execute
[2013-03-05 14:53:22,346] GenericFunctionTest.<init>(GenericFunctionTest.java:52) - inside constructor
[2013-03-05 14:53:22,372] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning **//this followed by 3 invocations before arriving at @Test method**
[2013-03-05 14:53:22,410] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning
[2013-03-05 14:53:22,416] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning
[2013-03-05 14:53:22,455] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning
[2013-03-05 14:53:22,892] GenericFunctionTest.<init>(GenericFunctionTest.java:52) - inside constructor
[2013-03-05 14:53:23,178] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning **//again blank as i havent set it yet**
[2013-03-05 14:53:23,182] GenericFunctionTest.getResult(GenericFunctionTest.java:69) - inside with test case:TestCase{signature=Signature{...}}**//I am setting it immedietely after this**
[2013-03-05 14:53:23,293] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning MyMethodName **//What i want**
[2013-03-05 14:53:23,299] GenericFunctionTest.toString(GenericFunctionTest.java:276) - returning MyMethodName **// again**
編集:テストメソッドのエントリで値を設定するのではなく、値をハードコーディングして、3つすべてを再試行しました。でも同じ結果