java - method - testng groups
El test @BeforeTest de TestNg en la clase base solo ocurre una vez por aparato (3)
Estoy tratando de usar @BeforeTest para obtener el código para ... ejecutar una vez antes de cada prueba.
Este es mi código:
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" solo se imprime una vez, no dos veces. ¿Qué estoy haciendo mal?
"BeforeTest" solo se imprime una vez, no dos veces. ¿Qué estoy haciendo mal?
***Lo siento. No me he dado cuenta de que está escrito @BeforeTest, pero en su ejemplo, @BeforeTest casi es igual a @BeforeClass, y es mejor usar @BeforeClass, cuando ya no tiene clases de prueba.
@BeforeClass "debe declararse en la misma clase que sus métodos de prueba, ¡no de manera diferente!
//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 se ejecutará una vez, antes de todos los métodos de prueba de esta clase. @BeforeMethod se ejecutará antes del método de prueba, antes de que se escriba.
@BeforeClass puede ser solo uno en la clase de prueba, en la diferencia @BeforeMethod! (Si es algo de @BeforeClass, se realizan por turnos, pero no es una composición correcta de la prueba)
PD Perdón por mi inglés :)
Según la documentation , se ejecuta un método anotado con @BeforeTest antes de que se ejecute cualquier método @Test perteneciente a las clases dentro de la etiqueta.
De acuerdo con mi experiencia:
- Cada método @BeforeTest se ejecuta solo una vez
- Si tiene varios métodos @BeforeTest, el orden de su ejecución depende del orden de la clase que contiene esos métodos @BeforeTest.
Puedes probar esto configurando un ejemplo simple.
Utilice @BeforeMethod, no @BeforeTest.
El significado de @BeforeTest se explica en la documentación .