Мне интересно узнать о @BeforeMethod
использование с группами. В http://testng.org/javadoc/org/testng/annotations/BeforeMethod.html сказано:
alwaysRun: Если установлено значение true, этот метод конфигурации будет выполняться независимо от того, в каких группах он принадлежит.
Итак, у меня есть следующий класс:
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();
}
}
}
Какие результаты:
BeforeMethod G1
BeforeMethod G2
g1Test()
BeforeMethod G1
BeforeMethod G2
g2Test()
Помимо того факта, что я думаю, что awaysRun по умолчанию ложно, может ли кто-нибудь объяснить мне, почему оба метода before вызываются перед каждым тестом, без учета групп? Что-то вроде @Test (skipBeforeMethod = "setUpG1") тоже подойдет.
Я использую IntelliJ IDEA CE 10.5.2. Я тоже запускал его с помощью gradle 1.0-milestone-3.