测试单个类时未调用@BeforeSuite

Jin*_*won 5 java testng unit-testing maven-surefire-plugin

我有一个带@BeforeSuite注释的方法。

public class MySuiteTest {

    @BeforeSuite
    public static void doSomethingVeryMandatory() {
        // say, boot up an embedded database
        // and create tables for JPA-annotated classes?
    }
}

public class MySingleTest {

    @Test
    public void doSomething() {
        // say, tests some MyBatis mappers against the embedded database?
    }
}
Run Code Online (Sandbox Code Playgroud)

当我测试整个测试时,

$ mvn clean test
Run Code Online (Sandbox Code Playgroud)

一切安好。@BeforeSuite运行和@Test运行。

当我尝试测试一个班级时

$ mvn -Dtest=MySingleTest clean test
Run Code Online (Sandbox Code Playgroud)

doSomethingVeryMandatory() 不被调用。

这正常吗?

nih*_*neo 1

您的 @BeforeSuite 和 @Test 位于不同的类中。当您运行单个类时,testng 会生成一个默认的 suite.xml,其中仅包含一个类。因此,您的 @BeforeSuite 对 testng 不可见。您可以在测试类中扩展 MySuiteClass 或创建一个套件文件并按照注释中的建议运行该套件文件。