【发布时间】:2012-03-21 16:22:19
【问题描述】:
我尝试按确定的顺序运行测试用例,但没有运气。我看到用 @AfterClass 注释的方法在另一个测试的方法之后运行:
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNGMapConfigurator@558ee9d6
RUN class com.example.testng.ITCaseOne.beforeClass()
RUN class com.example.testng.ITCaseOne.someCase()
RUN class com.example.testng.ITCaseTwo.beforeClass()
RUN class com.example.testng.ITCaseTwo.someCase()
RUN class com.example.testng.ITCaseOne.anotherCase()
RUN class com.example.testng.ITCaseOne.afterClass()
RUN class com.example.testng.ITCaseTwo.anotherCase()
RUN class com.example.testng.ITCaseTwo.afterClass()
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.25 sec
它失败了,因为来自ITCaseTwo 的所有@Test 必须仅在ITCaseOne.afterClass() 之后调用(因为我使用Selenium 并且从一种情况下的测试应该检查适当的页面)。
我的简单课程:
public class ITCaseOne {
@BeforeClass
public void beforeClass() {
System.out.printf("RUN %s.beforeClass()\n", getClass());
}
@AfterClass(alwaysRun = true)
public void afterClass() {
System.out.printf("RUN %s.afterClass()\n", getClass());
}
@Test(groups = "std-one")
public void someCase() {
System.out.printf("RUN %s.someCase()\n", getClass());
}
@Test(groups = "logic-one", dependsOnGroups = "std-one")
public void anotherCase() {
System.out.printf("RUN %s.anotherCase()\n", getClass());
}
}
和
public class ITCaseTwo {
@BeforeClass
public void beforeClass() {
System.out.printf("RUN %s.beforeClass()\n", getClass());
}
@AfterClass(alwaysRun = true)
public void afterClass() {
System.out.printf("RUN %s.afterClass()\n", getClass());
}
@Test(groups = "std-two")
public void someCase() {
System.out.printf("RUN %s.someCase()\n", getClass());
}
@Test(groups = "logic-two", dependsOnGroups = "std-two")
public void anotherCase() {
System.out.printf("RUN %s.anotherCase()\n", getClass());
}
}
如果很重要,我会使用 maven-failsafe-plugin 2.12 和 testng 6.4
(顺便说一句,我也尝试使用 preserve-order="true" 的套件文件,但它对我不起作用。)
提前致谢!
【问题讨论】:
标签: testng maven-failsafe-plugin