IntelliJ IDEA + TestNG: Führen Sie ein Verfahren vor jedem Test in einer Gruppe
-
25-09-2019 - |
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?
Lösung
- Die Auflistung ist nicht in Ordnung, dies IntelliJ Schuld ist. Führen Sie den Test in Befehlszeile oder mit maven wird die Bestellung korrekt.
-
@BeforeMethod
und@AfterMethod
scheinen mit Gruppen aufgeteilt. - 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:
- TestNG Bug-Tracker - Vorbearbeitungsmethode und Nachbearbeitungs Gruppen unterstützen gebrochen
- TestNG Mailingliste - Reihenfolge der Ausführung für Konfiguration Methoden, bei denen Gruppen
- TestNG Mailingliste - Vor und nach dem für Gruppen
- talios.com - Neue Kontrollen für die IntelliJ TestNG Plugin
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>