Я работаю над проектом, где мне нужно программно использовать TestNG (используя поставщиков данных). Все хорошо, за исключением того, что в отчете мы получаем имя метода @Test, который является общим для многих случаев. Нам хотелось бы получить значимое имя в отчете.
Я занимался этим исследованием и нашел 3 способа, но, к сожалению, все для меня не работают.
1) Внедрение ITest
Я устанавливаю имя, которое я хочу, как только я введу метод @Test (для всех трех способов, которые я пытался, именно так я устанавливаю имя). Это имя возвращается из getTestName(). Я заметил, что getTestName() вызывается до и после моего @Test. Первоначально он возвращает null (для обработки NullPointerException я возвращаю "вместо" ), а затем возвращает правильное значение. Но я не вижу, как это отражается в отчете
Изменить. Также попытался установить имя из @BeforeMethod, как было предложено artdanil
2 и 3
Оба основаны на решениях, приведенных в второй ссылке выше
Переопределяя setName в XmlSuite, я получаю
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 с помощью hardcoding значение, а не устанавливал его при вводе моего тестового метода. Но те же результаты