使用 @Test(dependsOnMethods=..) testNG 注释标记测试方法使它们不执行
Marking test methods with @Test(dependsOnMethods=..) testNG annotation make them not to execute
我的生产测试套件出现问题 运行s。
testng.xml 已使用自定义侦听器在多线程环境中设置 运行 测试套件。因此,每个测试都有多个驱动程序实例 运行 单独并行运行。
上次套件开始失败,我注意到奇怪的行为:
在其@Test 注释中具有dependsOnMethods 的每个测试方法中的每个测试都不会执行。驱动程序只是跳过它们,并且不会执行 @AfterTest 方法作为结果。
或者,我想它不会跳过它们,它不会向依赖方法报告 "login" 方法已完成并且它们可以继续执行。
但我不知道为什么会这样
像这样:
@BeforeClass
protected void beforeClassInit(){
setUp(///);
}
@Test
public void login() {
//login activities
}
@Test(dependsOnMethods = "login")
public void createSmth() {
///
}
@Test(dependsOnMethods = "createService")
public void deleteSmth() {
///
}
@AfterClass(alwaysRun = true)
protected void afterClass() {
shutDown();
}
问题出在测试逻辑上。
通过大量的实验,它被定义为,TestNG 总是 运行s 依赖方法在并行结束时 运行。
意思是,你有 3 个测试 类:
Test1.java
Test2.java
Test3.java
而且各自都有一些测试方法。
TestNG 套件包含 3 类 将 运行 来自那些 类 的每个非依赖方法,然后返回并完成 运行 那些离开的依赖方法.
疯狂的行为,但看起来就是这样/
查看你的代码,
@BeforeClass
protected void beforeClassInit(){
setUp(///);
}
@Test
public void login() {
//login activities
}
@Test(dependsOnMethods = "login", alwaysRun=true)
public void createSmth() {
///
}
@Test(dependsOnMethods = "createSmth", alwaysRun=true)
public void deleteSmth() {
///
}
@AfterClass(alwaysRun = true)
protected void afterClass() {
shutDown();
}
createSmth 和 deleteSmth 始终 运行 即使依赖方法将无法执行。 class注解前后会在运行before/after当前class中的first/last测试方法被调用。
@BeforeClass 当多个测试需要共享相同的计算昂贵的设置代码时。 @BeforeClass 只会执行一次
即使您 运行 在 parellel
中使用 testng.xml 也能正常工作
我的生产测试套件出现问题 运行s。
testng.xml 已使用自定义侦听器在多线程环境中设置 运行 测试套件。因此,每个测试都有多个驱动程序实例 运行 单独并行运行。 上次套件开始失败,我注意到奇怪的行为:
在其@Test 注释中具有dependsOnMethods 的每个测试方法中的每个测试都不会执行。驱动程序只是跳过它们,并且不会执行 @AfterTest 方法作为结果。 或者,我想它不会跳过它们,它不会向依赖方法报告 "login" 方法已完成并且它们可以继续执行。
但我不知道为什么会这样
像这样:
@BeforeClass
protected void beforeClassInit(){
setUp(///);
}
@Test
public void login() {
//login activities
}
@Test(dependsOnMethods = "login")
public void createSmth() {
///
}
@Test(dependsOnMethods = "createService")
public void deleteSmth() {
///
}
@AfterClass(alwaysRun = true)
protected void afterClass() {
shutDown();
}
问题出在测试逻辑上。 通过大量的实验,它被定义为,TestNG 总是 运行s 依赖方法在并行结束时 运行。 意思是,你有 3 个测试 类: Test1.java Test2.java Test3.java
而且各自都有一些测试方法。
TestNG 套件包含 3 类 将 运行 来自那些 类 的每个非依赖方法,然后返回并完成 运行 那些离开的依赖方法.
疯狂的行为,但看起来就是这样/
查看你的代码,
@BeforeClass
protected void beforeClassInit(){
setUp(///);
}
@Test
public void login() {
//login activities
}
@Test(dependsOnMethods = "login", alwaysRun=true)
public void createSmth() {
///
}
@Test(dependsOnMethods = "createSmth", alwaysRun=true)
public void deleteSmth() {
///
}
@AfterClass(alwaysRun = true)
protected void afterClass() {
shutDown();
}
createSmth 和 deleteSmth 始终 运行 即使依赖方法将无法执行。 class注解前后会在运行before/after当前class中的first/last测试方法被调用。 @BeforeClass 当多个测试需要共享相同的计算昂贵的设置代码时。 @BeforeClass 只会执行一次
即使您 运行 在 parellel
中使用 testng.xml 也能正常工作