/ / TestNG-Anmerkungsreihenfolge - Java, Testng

Reihenfolge der TestNG-Anmerkungen - Java, Testng

Ich habe eine Frage zur Reihenfolge der Operationen mit TestNG-Anmerkungen ... Ich habe den folgenden Code:

public class AnnotationsTest {

@BeforeSuite(alwaysRun = true)
public static void beforeSuite() {
System.out.println("@BeforeSuite");
}

@BeforeClass(alwaysRun = true)
public static void beforeClass() {
System.out.println("@BeforeClass");
}

@BeforeTest(alwaysRun = true)
public static void beforeTest() {
System.out.println("@BeforeTest");
}

@BeforeMethod(alwaysRun = true)
public static void beforeMethod() {
System.out.println("@BeforeMethod");
}

@AfterSuite(alwaysRun = true)
public static void afterSuite() {
System.out.println("@AfterSuite");
}

@AfterClass(alwaysRun = true)
public static void afterClass() {
System.out.println("@AfterClass");
}

@AfterTest(alwaysRun = true)
public static void afterTest() {
System.out.println("@AfterTest");
}

@AfterMethod(alwaysRun = true)
public static void afterMethod() {
System.out.println("@AfterMethod");
}

@Test
public void test() {
System.out.println("Test");
}

@Test
public void test2() {
System.out.println("Test2");
}
}

Meine Ausgabe ist folgende:

Bildbeschreibung hier eingeben

Meine Frage ist, warum @AfterTest-Methode nicht ausgeführt wirdnach jeder @ Test-Anmerkung? Behandelt TestNG die gesamte Klasse als "Test"? Es scheint, dass dies der Fall ist, weil @BeforeTest und @AfterTest außerhalb von @BeforeClass und @AfterClass liegen, aber ich wollte sicher sein, dass ich es verstehe. Ich gehe davon aus, dass ich @BeforeMethod und @AfterMethod in diesem Fall verwenden könnte, um vor und nach dem Test1 und Test2 in dieser Klasse auszuführen. Vielen Dank!

Antworten:

4 für die Antwort № 1

Meine Frage ist, warum die @AfterTest-Methode nicht nach jedem @Test ausgeführt wird Anmerkung?

Als die Dokumentation sagt

@AfterTest: Die annotierte Methode wird nach dem Test ausgeführt Methoden, die zu den Klassen innerhalb der <gehörenPrüfung> tag sind gelaufen.

und

@BeforeTest: Die annotierte Methode wird vor jeder Testmethode ausgeführt Zu den Klassen innerhalb der <Prüfung> Tag wird ausgeführt.