Frage

Ich lerne 9 TestNG für IntelliJ IDEA zu verwenden.

Soweit ich verstehe, Eine Möglichkeit, einen Test in einer Gruppe zu setzen genannt name ist es @Test(group = "name") zu annotieren. So führen Sie eine Methode vor jedem Test, mit Anmerkungen versehen es mit @BeforeMethod.

In meinem Testaufbau mag ich eine Methode zu laufen vor jedem Test nur in einer bestimmten Gruppe. So gibt es ein Verfahren beforeA dass Läufe vor jedem Test in Gruppe A, ein Verfahren beforeB vor jedem B Test laufen und so weiter.

Beispielcode:

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");
    }
}

Ich erwarte, dass eine Ausgabe wie

before A
test A1
before A
test A2
before B
test B1
before B
test B2

, aber ich bekomme die folgende:

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
===============================================

Und IntelliJ IDEA hat hervorgehoben, alle meine Anmerkungen mit der Meldung „Gruppe A ist nicht definiert“ oder „Gruppe B ist nicht definiert“.

Was mache ich falsch?

War es hilfreich?

Lösung

  1. Die Auflistung ist nicht in Ordnung, dies IntelliJ Schuld ist. Führen Sie den Test in Befehlszeile oder mit maven wird die Bestellung korrekt.
  2. @BeforeMethod und @AfterMethod scheinen mit Gruppen aufgeteilt.
  3. IntelliJ Gruppen erinnern Sie sich, bevor sie verwendet, wenn Sie eine Gruppe verwenden, die noch nicht erinnert wird, die Meldung „Gruppe X nicht definiert“ angezeigt. Nur pres alt + Enter auf einen nicht definierten Gruppe es zu merken.

Ressourcen:

Andere Tipps

Ich fragte Intellij es zu beheben. Bitte überprüfen Ausgabe: http://youtrack.jetbrains.net/issue/IDEA-67653 Wir müssen dafür stimmen so JetBrains es wird fix

@BeforeMethod(groups =...) sollte nicht vor jeder Methode in einer Gruppe laufen. Es wird in einer Klasse vor jedem Verfahren ausgeführt werden. Der Unterschied ist, wird es nur gehören zu einer bestimmten Gruppe, nicht mehr. See DOCS

erwähnt Wie TEH EMPRAH @BeforeMethod wird nicht angenommen, vor jeder Methode auszuführen, von denen, wie sie in der gleichen Gruppe gehört.

Um dies konfigurieren Sie müssen zu erreichen, um Sie richtig testng.xml. Für Ihre erwartete Ausgabe sollte es wie so aussehen

<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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top