thread test method exclude docu aftermethod after java unit-testing testng

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 .