我的TestNG.xml导致执行@BeforeTest方法,即使没有测试符合该类

时间:2017-05-15 13:50:31

标签: testng

我的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
       }

2 个答案:

答案 0 :(得分:0)

  

OP发布代码后更新:

好的,我可以在这里看到问题。请删除&#39; alwaysRun = true&#39;来自@BeforeTest和@BeforeMethod。它会覆盖您的组执行顺序!

没有太多的目的在那里使用,因为你仍然会得到所需的行为(即在任何事情之前@BeforeTest将执行无关于你的alwaysRun选项,然后是@BeforeMethod,如果你想要的话还有另一个名为@BeforeClass的标签使用它,在@BeforeTest之前。)

如果从长远来看,你希望更多地控制你的小组被执行的方式,那么也要看GroupDependencies(即不要执行&#34;回归&#34;如果&#34;抽烟&#34;失败)

祝你好运!

答案 1 :(得分:0)

groups也可在@BeforeX / @AfterX上找到。

添加适当的值,它应该按预期工作。

相关问题