说我有以下XML:
<suite name="MATS">
<test name="mats_test">
<groups>
<run>
<include name="mats" />
</run>
</groups>
<packages>
<package name="com.tests" />
</packages>
</test>
</suite>
并且
com.tests
包中的每个测试类只有一个带有不同组注释的测试方法。是否将执行不在“ mats”组中的类的beforeClass()
和afterClass()
方法? 最佳答案
除非将alwaysRun
设置为true
,否则不在指定组中的Before / After方法将不会运行。
alwaysRun
对于before方法(beforeSuite,beforeTest,beforeTestClass和
beforeTestMethod,但不是beforeGroups):如果设置为true,则此
不管它属于哪个组,都将运行配置方法
至。
对于after方法(afterSuite,afterClass,...):如果设置为true,则此
即使调用一个或多个方法,配置方法也将运行
先前失败或被跳过。
例如给定以下类别:
public class AMatsTest {
@BeforeSuite(groups = {"mats"})
public void beforeSuite() {}
}
public class NotAMatsTest {
@BeforeSuite
public void beforeSuite() {}
}
@Test(groups = {"mats"})
public class AnotherMatsTest {
@BeforeSuite public void beforeSuite() {}
}
public class AlwaysTest {
@BeforeSuite(alwaysRun = true)
public void beforeSuite() {}
}
AMatsTest.beforeSuite()
,AnotherMatsTest.beforeSuite()
和AlwaysTest.beforeSuite()
将被执行。NotAMatsTest.beforeSuite()
将不会执行。关于java - 测试组的TestNG执行顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34637893/