我有一个DataProvider
,它会读取以下CSV文件
john|26|mba
claire|33|bbl
knight|29|mpa
现在我有3个classes
,每个都有1个@Test
类名是
NameReader.java
ProcessStudent.java
ValidateDatabase.java
我的NameReader.java
有一个@Test
方法,该方法从上述数据提供程序获取输入。因此,在这种情况下,如果我仅执行NameReader.java
,由于存在三行,它将运行3次
但是问题是我希望NameReader.Java
接受数据提供者的第一行,然后运行ProcessStudent.java
,然后运行ValidateDatabase.java
。对于DataProvider
中剩余的两行,也应该发生这种情况。
但是如果我将我的testng.xml
指定为以下内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test thread-count="1" name="Test" preserve-order="true">
<classes>
<class name="com.java.testng.NameReader"/>
<class name="com.java.testng.ProcessStudent"/>
<class name="com.java.testng.ValidateDatabase"/>
</classes>
</test>
</suite>
它首先在@Test
内部运行NameReader.java
3次,然后移至@Test
内部的ProcessStudent.java
,然后移至{{1 }}。
请记住,我不需要在@Test
或ValidateDatabase.java
中使用上述DataProvider
我怎样才能实现我所需要的?
答案 0 :(得分:0)
从NameReader测试方法中调用ProcessStudent和ValidateDatabase测试方法。必须将ProcessStudent和ValidateDatabase测试方法声明为静态方法。
public class NameReader {
@Test(dataProvider = "getData")
public void testNameReader(String str1, String str2) {
System.out.println("data set = "+str1+" "+str2);
System.out.println("NameReader ends");
ProcessStudent.testClassB();
ValidateDatabase.testClassC();
}
@DataProvider
public Object[][] getData(){
//data set here
}