Sto lavorando a un progetto in cui è necessario richiamare TestNG in modo programmatico (utilizzando i provider di dati). Le cose vanno bene tranne che nel report, stiamo ricevendo il nome del metodo @Test, che è generico per gestire molti casi. Quello che vorremmo è ottenere un nome significativo nel rapporto.Nome del metodo di prova personalizzato nei report TestNG
Stavo facendo ricerche su questo e ho trovato 3 modi, ma sfortunatamente, tutti stanno fallendo per me.
1) Attuare ITest
ho trovato su questo here e here
io pongo il nome che voglio, non appena inserisco il metodo @Test (Per tutti i 3 modi che ho provato, questo è come sto impostando il nome). Questo nome viene restituito da getTestName(). Quello che ho osservato è che getTestName() viene chiamato prima e dopo il mio @Test. Inizialmente, restituisce null (per la gestione di NullPointerException, restituisco "" invece di null) e successivamente restituisce il valore corretto. Ma io non vedere questo sempre riflessa nella relazione
Edit: provato anche l'impostazione del nome da @ BeforeMethod come suggerito da artdanil
2 e 3
Entrambi si basano su soluzioni di cui al il second link above
con l'override setName in XmlSuite, sto ottenendo
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)
...
Con l'override toString(), vedo questi in tronchi (con i miei commenti), ma non gli aggiornamenti in rapporto
[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**
Edit: provato di nuovo tutti e 3 da hardcoding un valore piuttosto che impostare su ingresso di il mio metodo di prova Ma gli stessi risultati
Lo faccio utilizzando un rapporto ascoltatore TestNG per innescare una classe che costruisce il mio HTML fuori il risultato iSuite. Per visualizzare dati arbitrari nel report di test, come i valori degli argomenti del test, penso che dovresti aggiungere dati a ITestContext per ogni test in modo che lo scrittore di report abbia accesso ai dati aggiuntivi.Fortunatamente il nome del metodo fa già parte di quel contesto e puoi recuperarlo. – djangofan