我想知道@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是假的,有人可以向我解释为什么在每次测试之前都调用方法之前,忽略这些组?像@Test(skipBeforeMethod =“setUpG1”)这样的东西也可以。
我正在使用IntelliJ IDEA CE 10.5.2。我也用gradle 1.0-milestone-3运行它。
答案 0 :(得分:2)
你是如何调用TestNG的?你在运行任何团体吗?
如果你没有,那么@BeforeMethods都会运行。如果你运行“g1”,只会运行setupG1等...
答案 1 :(得分:2)
这是因为groups
标志仅指示方法是否属于组。启用该组后,它将始终执行,即,在所有测试方法之前,无论测试方法属于哪个组。默认情况下,所有组均处于启用状态。
如果只想对某些组的测试执行该方法,则需要指定onlyForGroups
。
public class BeforeTest {
private static final Logger LOG = Logger.getLogger(BeforeTest.class);
@BeforeMethod(onlyForGroups = { "g1" })
public void setUpG1() {
sleep();
LOG.info("BeforeMethod G1");
}
@Test(groups = { "g1" })
public void g1Test() {
sleep();
LOG.info("g1Test()");
}
@BeforeMethod(onlyForGroups = { "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
g1Test()
BeforeMethod G2
g2Test()
答案 2 :(得分:0)
我建议不要使用alwaysRun = true,但是为配置方法创建一个特殊的组(我们使用" config"),并在*()和*()方法之后注释所有组= "配置"
所有测试方法都可以使用您喜欢的任何组进行注释,例如: "富"和" bar"。
然后,在你的跑步中,你做:
-Dgroups=config,foo
或
-Dgroups=config,bar
如果您再添加另一个组" newGroup",则不必通过所有配置方法并添加" newGroup"对他们来说,你只需要跑:
-Dgroups=config,newGroup
这样可以更轻松地管理小组!
如果你(错误地?)运行了类似的内容:
-Dgroups=config,nonExistingGroup
没有测试(并且没有配置方法)会运行,因为您实际上没有为" nonExistingGroup"注释任何测试。和配置方法仅在存在"匹配测试时才运行"需要这些配置方法才能运行。