/ / TestNG Commande d'annotations - java, testng

TestNG commande d'annotations - java, testng

J'ai une question sur l'ordre des opérations avec les annotations TestNG ... J'ai le code suivant:

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

Ma sortie est la suivante:

entrer la description de l'image ici

Ma question est la suivante: pourquoi la méthode @AfterTest n'est-elle pas exécutée?après chaque annotation @Test? Est-ce que TestNG traite la classe entière comme le "Test"? Il semble que ce soit le cas, car @BeforeTest et @AfterTest sont en dehors de @BeforeClass et @AfterClass, mais je voulais être sûr de bien comprendre. Je suppose que je pourrais utiliser les méthodes @BeforeMethod et @AfterMethod dans ce cas pour exécuter avant et après les tests1 et 2 dans cette classe. Merci!

Réponses:

4 pour la réponse № 1

Ma question est la suivante: pourquoi la méthode @AfterTest n'est-elle pas exécutée après chaque test? annotation?

Comme le Documentation dit

@AfterTest: la méthode annotée sera exécutée après tout le test méthodes appartenant aux classes à l'intérieur du <tester> tag ont couru.

et

@BeforeTest: la méthode annotée sera exécutée avant toute méthode de test appartenant aux classes à l'intérieur du <tester> la balise est exécutée.