TestNG BeforeMethod с группами

Мне интересно узнать о @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.

9
задан Maria Ines Parnisari 12 October 2017 в 17:40
поделиться