我有一个@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?
}
}
当我测试整个测试时,
$ mvn clean test
一切都很好。 @BeforeSuite
运行并@Test
运行。
当我尝试测试单个课程时
$ mvn -Dtest=MySingleTest clean test
doSomethingVeryMandatory()
未被调用。
这是正常的吗?
答案 0 :(得分:2)
你的@BeforeSuite和@Test在不同的班级。当您运行单个类时,testng会生成一个默认的suite.xml,其中只有一个类。因此,你的@BeforeSuite对于testng是不可见的。您可以在测试类中扩展MySuiteClass,也可以创建套件文件并按照注释中的建议运行套件文件。
答案 1 :(得分:0)
Babulu's对这个问题的评论很好,只是为将来的读者详细举例说明了:
<suite name="Suite Name" verbose="0">
<test name="TestName">
<classes>
<class name="MySuiteTest"/>
<class name="MySingleTest"/>
</classes>
</test>
</suite>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>config/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>