J'essaie d'utiliser @BeforeTest pour obtenir du code à ... exécuter une fois avant chaque test.
Voici mon code:
public class TestBase {
@BeforeTest
public void before() {
System.out.println("BeforeTest");
}
}
public class TestClass extends TestBase{
@Test
public void test1(){}
@Test
public void test2(){}
}
"BeforeTest" n'est imprimé qu'une fois, pas deux. Qu'est-ce que je fais mal?
Utilisez @BeforeMethod, pas @BeforeTest.
La signification de @BeforeTest est expliquée dans la documentation .
"BeforeTest" n'est imprimé qu'une fois, pas deux. Qu'est-ce que je fais mal?
***Désolé. Je n'ai pas remarqué que vous êtes écrit @BeforeTest, mais dans votre exemple @BeforeTest est presque égal à @BeforeClass, et mieux utiliser @BeforeClass, quand vous n'avez plus de classes de test.
@BeforeClass "doit être déclaré dans la même classe que vos méthodes de test, pas différemment!
//Example
package test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class Tests {
private String bClass;
private String bMethod1;
private String bMethod2;
@BeforeClass
public void beforeClass() {
bClass = "BeforeClass was executed once for this class";
}
@BeforeMethod
public void beforeMetodTest1() {
bMethod1 = "It's before method for test1";
}
@Test
public void test1() {
System.out.println(bClass);
System.out.println(bMethod1);
}
@BeforeMethod
public void beforeMethodTest2() {
bMethod2 = "It's before method for test2";
}
@Test
public void test2() {
System.out.println(bClass);
System.out.println(bMethod2);
}
}
@BeforeClass sera exécuté une fois, avant toutes vos méthodes de test dans cette classe. @BeforeMethod sera exécuté avant la méthode de test, avant laquelle il est écrit.
@BeforeClass peut être un seul dans la classe de test, à la différence @BeforeMethod! (S'il s'agit de @BeforeClass, ils sont effectués tour à tour, mais ce n'est pas une composition correcte du test)
P.S. Désolé pour mon anglais :)
Selon documentation , une méthode annotée avec @BeforeTest est exécutée avant l'exécution de toute méthode @Test appartenant aux classes à l'intérieur de la balise.
Selon mon expérience:
Vous pouvez tester cela en configurant un exemple simple.
Si vous utilisez @beforeTest, cette méthode sera exécutée une fois au début de chaque <test>
(nous spécifions dans le fichier xml de combinaison de test) si ce test contient cette classe
Tous les @befortests dans toutes les classes dans un <test>
sera exécuté au début de ce test