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?

È stato utile?

Soluzione

  1. L'elenco non è in buone condizioni, questo è colpa di IntelliJ. Eseguire il test in linea di comando o con Maven l'ordine sarà corretto.
  2. @BeforeMethod e @AfterMethod sembrano rotti con i gruppi.
  3. 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top