当要依赖的测试与具有此注释的测试的类相同时,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 c2
中创建一个调用c1.verifyConfig()
的测试。但这会重复太多。
答案 0 :(得分:31)
将该方法放在group
中并使用dependsOnGroups
。
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
}
}
答案 1 :(得分:1)
@Test(groups = {“先决条件”})
console.log
public void M1()
{
}
@Test(dependsOnGroups={"prerequisites"})
public void M2()
{
}
答案 2 :(得分:0)
您可以在TestNG groups
批注中使用dependsOnGroups
和@Test
,如先前的答案所述。
但是,两个类都必须位于同一<test>
下。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite" verbose="1" >
<test name="Test" >
<classes>
<class name="c1" />
<class name="c2" />
</classes>
</test>
</suite>
在运行测试套件时,以下内容将导致异常。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<test name="Test1" >
<classes>
<class name="c1" />
</classes>
</test>
<test name="Test2">
<classes>
<class name="c2" />
</classes>
</test>
</suite>
答案 3 :(得分:0)
两种解决方案: 1.使用dependsOnGroups和继承
host='login.spotify.com%0a'
使用编程:
import static org.testng.Assert.fail;
import org.testng.annotations.Test;
public class PTest1 {
@Test(groups = "A")
public void test11() {
System.out.println("test11");
fail();
}
}
import org.testng.annotations.Test;
public class PTest2 extends PTest1 {
@Test(groups = "B", dependsOnGroups = "A")
public void test21() {
System.out.println("test21");
}
}
<suite name="priority" verbose="1">
<groups>
<run>
<include name ="B"/>
</run>
</groups>
<test name="pri2">
<classes>
<class name="priority.PTest2"/>
</classes>
</test>
<test name="pri1">
<classes>
<class name="priority.PTest1"/>
</classes>
</test>
</suite>