【发布时间】:2016-03-07 05:05:47
【问题描述】:
我有一套测试用例。我希望在测试用例执行之前和之后分别调用 @BeforeClass 和 @AfterClass 。当我使用 JUnit 运行套件类时,它会正确调用方法,即 setUp() 将在测试用例之前调用,而 tearDown() 将在测试用例完成后调用。但是当我执行 maven 以执行测试用例并使用生成报告时肯定不会调用 setUp() 和 tearDown()
@RunWith(Suite.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@SuiteClasses({test1.class, test2.class})
public class SuiteClass{
public static WebDriver driver;
public static String baseUrl;
public static StringBuffer verificationErrors = new StringBuffer();
@BeforeClass
public static void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://localhost:7070/myproject/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@AfterClass
public static void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
}
【问题讨论】:
-
我不知道 Surefire 甚至无法识别您的测试类,除非它有
@test注释。 -
@djangofan,谢谢,你是对的,surefire 不包括套件类。有没有办法将套件类包含在内?
-
Surefire 会在您的
src/test/java文件夹中自动扫描它。因此,如果您没有包含 Test 注释的类,那么 Surefire 找不到它们是有道理的。 -
我在 src/test/java 中有所有的类。你的意思是套件类应该包含 @test 注释以便确保找到它?
-
啊……你让我上了那个。是的,我猜 Surefire 不知道如何扫描 @SuiteClasses 注释。如果没有更具体的信息,我无法进一步回答。
标签: maven selenium selenium-webdriver junit surefire