IntelliJ IDEA + TestNG: Eseguire un metodo prima di ogni prova in un gruppo
-
25-09-2019 - |
Domanda
Sto imparando a utilizzare TestNG per IntelliJ IDEA 9.
Per quanto ho capito, Un modo per mettere un test in un gruppo chiamato name
è di annotarlo @Test(group = "name")
. Per eseguire un metodo prima di ogni prova, annotare con @BeforeMethod
.
Nella mia configurazione di prova voglio un metodo per eseguire prima di ogni prova solo in un particolare gruppo. Quindi non v'è un metodo beforeA
che corre prima di ogni prova nel gruppo A
, un metodo beforeB
in esecuzione prima di ogni prova B
e così via.
Esempio di codice:
public class TestExample
{
@BeforeMethod(groups = "A")
public void beforeA()
{
System.out.println("before A");
}
@BeforeMethod(groups = "B")
public void beforeB()
{
System.out.println("before B");
}
@Test(groups = "A")
public void A1()
{
System.out.println("test A1");
}
@Test(groups = "A")
public void A2()
{
System.out.println("test A2");
}
@Test(groups = "B")
public void B1()
{
System.out.println("test B1");
}
@Test(groups = "B")
public void B2()
{
System.out.println("test B2");
}
}
Mi aspetto di uscita come
before A
test A1
before A
test A2
before B
test B1
before B
test B2
, ma ottengo il seguente:
before A
before B
before A
before B
test A2
before A
before B
before A
before B
test B1
===============================================
test B2
===============================================
Custom suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================
E IntelliJ IDEA ha messo in luce tutte le mie annotazioni con il messaggio "Gruppo A è indefinito" o "Gruppo B non è definita".
Che cosa sto facendo di sbagliato?
Soluzione
- L'elenco non è in buone condizioni, questo è colpa di IntelliJ. Eseguire il test in linea di comando o con Maven l'ordine sarà corretto.
-
@BeforeMethod
e@AfterMethod
sembrano rotti con i gruppi. - IntelliJ ricordare gruppi che hai usato in precedenza, se si utilizza un gruppo che non è ancora ricordato, il messaggio "Gruppo X non è definito" verrà mostrato. Basta pres alt + Invio su un gruppo definito di ricordarla.
Risorse:
Altri suggerimenti
ho chiesto Intellij per risolvere il problema. Si prega di emissione dell'assegno: http://youtrack.jetbrains.net/issue/IDEA-67653 Abbiamo bisogno di votare per esso in modo JetBrains sarà risolvere il problema
@BeforeMethod(groups =...)
non dovrebbe eseguire prima di ogni metodo in un gruppo.
Verrà eseguito prima di ogni metodo in una classe. La differenza è, sarà solo appartengono ad un particolare gruppo, niente di più. See DOCS
Come menzionato da TEH EMPRAH @BeforeMethod non è supponiamo di eseguire prima di ogni metodo appartenente allo stesso gruppo come.
Al fine di raggiungere questo obiettivo è necessario configurare si testng.xml correttamente. Per l'output previsto dovrebbe assomigliare in modo
<suite....>
<test name="A">
<groups>
<run>
<include name="A"/>
</run>
</groups>
<classes>
<class name="...TestExample"/>
</classes>
</test>
<test name="B">
<groups>
<run>
<include name="B"/>
</run>
</groups>
<classes>
<class name="...TestExample"/>
</classes>
</test>
</suite>