Me pregunto acerca del uso de @BeforeMethod
con grupos. En http://testng.org/javadoc/org/testng/annotations/BeforeMethod.html dice:TestNG BeforeMethod con grupos
alwaysRun: Si se establece en verdadero, este método de configuración se ejecutará independientemente de los grupos a los que pertenece.
así que tengo la clase siguiente:
public class BeforeTest {
private static final Logger LOG = Logger.getLogger(BeforeTest.class);
@BeforeMethod(groups = {"g1"}, alwaysRun = false)
public void setUpG1(){
sleep();
LOG.info("BeforeMethod G1");
}
@Test(groups = {"g1"})
public void g1Test(){
sleep();
LOG.info("g1Test()");
}
@BeforeMethod(groups = {"g2"}, alwaysRun = false)
public void setUpG2(){
sleep();
LOG.info("BeforeMethod G2");
}
@Test(groups = {"g2"})
public void g2Test(){
sleep();
LOG.info("g2Test()");
}
private void sleep(){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
que da salida:
BeforeMethod G1
BeforeMethod G2
g1Test()
BeforeMethod G1
BeforeMethod G2
g2Test()
Aparte del hecho de que creo awaysRun es false por defecto, puede alguien explicarme por qué tanto antes los métodos se llaman antes de cada prueba, sin tener en cuenta los grupos? Algo como @Test (skipBeforeMethod = "setUpG1") también funcionaría.
Estoy usando IntelliJ IDEA CE 10.5.2. Lo he ejecutado con gradle 1.0-milestone-3, también.
No ejecuto ninguno, la agrupación de pensamientos es un tipo de filtrado, por lo que el método before con un cierto grupo solo se aplica a las pruebas con el mismo grupo. Supongo que estaba equivocado. Lo que tengo que hacer es algo así como su solución aquí (http://stackoverflow.com/questions/3115822/passing-output-of-one-test-method-to-another-method-testng), pero el problema con eso La solución es que mResult no se restablece si hay muchas pruebas según f1. – rweng