TestNG依赖于来自不同类别的OnMethodsDependsOnMethods不能从不同的类中使用,要解决这个问题,我们可以使用DependsOnGroups;做代码更改;1. 取决于OnGroups类;2.class哪个调用取决于组;3.xml

2022-09-01 11:53:52

当要依赖的测试与具有此批注的测试的测试的类位于同一类中时,注释的属性工作正常。但是,如果要测试的方法和依赖的方法处于不同的类别中,则它不起作用。示例如下:dependsOnMethods@Test

class c1 {
  @Test
  public void verifyConfig() {
    //verify some test config parameters
  }
}

class c2 {
  @Test(dependsOnMethods={"c1.verifyConfig"})
  public void dotest() {
    //Actual test
  }
}

有没有办法绕过这个限制?一种简单的方法是在调用 中创建一个测试。但这太重复了。class c2c1.verifyConfig()


答案 1

将方法放在 中并使用 。groupdependsOnGroups

class c1 {
  @Test(groups={"c1.verifyConfig"})
  public void verifyConfig() {
    //verify some test config parameters
  }
}

class c2 {
  @Test(dependsOnGroups={"c1.verifyConfig"})
  public void dotest() {
    //Actual test
  }
}

建议在 * 中验证配置,如果出现问题,则抛出,以便测试不会运行。这样,测试可以只专注于测试。@Before

class c2 {
  @BeforeClass
  public static void verifyConfig() {
    //verify some test config parameters
    //Usually just throw exceptions
    //Assert statements will work
  }

  @Test
  public void dotest() {
    //Actual test
  }
}

答案 2

DependsOnMethods不能从不同的类中使用,要解决这个问题,我们可以使用DependsOnGroups;

做代码更改;

1. 取决于OnGroups类;

@Test(groups={“prerequisites” })

public void M1()
{

}

2.class哪个调用取决于组;

@Test(dependsOnGroups={"prerequisites"})
public void M2()

{

}

3.xml

<groups>
    <run>
        <include name ="prerequisites"/>
    </run>
</groups>