说我有以下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/

10-10 03:50