我的TestNG.xml包含一组这种标记: -
<test name="Order">
<groups>
<run>
<include name="Smoke" />
<exclude name="Regression"></exclude>
</run>
</groups>
<classes>
<class name="com.test.myproject.class1"/>
</classes>
</test>
发生的事情是某些类只有回归组名称而没有Smoke名称。所以,我期待不应该执行这些类。但是,我可以看到这些类的BeforeTest和AfterTest被执行,即使没有一个测试有资格被执行。
关于如何不允许执行BeforeTest和AfterTest的任何提示? 我正在使用TestNG 6.9.9
以下是我的java testng代码的外观: -
@Listeners(AUTEventListener.class)
public class MyTest extends BaseTestCase {
@Parameters({ "browserName", "gridHubUrl", "gridNodeUrl" })
@BeforeTest(alwaysRun = true)
public void testInit(String browserName, String gridHubUrl, String gridNodeUrl) throws Exception {
//Before Test logic is here
}
@BeforeMethod(alwaysRun = true)
public void openBrowser() {
//BeforeMethod logic is here
}
@Test(priority = 1, groups={"Regression"}, description = "Testcase to Verify that a claimant is able to file a non cargo claim")
@TestInfo(testcaseIds={"TC-12344"})
public void TC_12344_MyTestMethod() throws Exception
{
// Test is here
}
答案 0 :(得分:0)
OP发布代码后更新:
好的,我可以在这里看到问题。请删除&#39; alwaysRun = true&#39;来自@BeforeTest和@BeforeMethod。它会覆盖您的组执行顺序!
没有太多的目的在那里使用,因为你仍然会得到所需的行为(即在任何事情之前@BeforeTest将执行无关于你的alwaysRun选项,然后是@BeforeMethod,如果你想要的话还有另一个名为@BeforeClass的标签使用它,在@BeforeTest之前。)
如果从长远来看,你希望更多地控制你的小组被执行的方式,那么也要看GroupDependencies(即不要执行&#34;回归&#34;如果&#34;抽烟&#34;失败)
祝你好运!
答案 1 :(得分:0)
groups
也可在@BeforeX
/ @AfterX
上找到。
添加适当的值,它应该按预期工作。