Mi chiedo sull'utilizzo di @BeforeMethod
con i gruppi. In http://testng.org/javadoc/org/testng/annotations/BeforeMethod.html è indicato:TestNG BeforeMethod con gruppi
alwaysRun: se impostato su true, questo metodo di configurazione verrà eseguito indipendentemente dai gruppi a cui appartiene.
così ho la seguente classe:
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();
}
}
}
quali uscite:
BeforeMethod G1
BeforeMethod G2
g1Test()
BeforeMethod G1
BeforeMethod G2
g2Test()
A parte il fatto che credo awaysRun è false per impostazione predefinita, chiunque può spiegarmi perché sia prima i metodi vengono chiamati prima di ogni test, ignorando i gruppi? Funzionerebbe anche come @Test (skipBeforeMethod = "setUpG1").
Sto usando IntelliJ IDEA CE 10.5.2. L'ho eseguito anche con gradle 1.0-milestone-3.
Non eseguo nessuno, il raggruppamento pensato è una sorta di filtro in modo che il metodo beforeMethod con un determinato gruppo si applichi solo ai test con lo stesso gruppo. Credo di aver sbagliato. Quello che devo fare è qualcosa come la tua soluzione qui (http://stackoverflow.com/questions/3115822/passing-output-of-one-test-method-to-another-method-testng), ma il problema con quello la soluzione è che mResult non viene resettato se ci sono molti test a seconda di f1. – rweng