我遇到了一个问题,其中我创建了一个使用dataprovider的参数化方法。 DataProvider和方法都在同一个类中创建。现在,我想从另一个类调用此方法,但它需要传递参数,因为它们是从dataProvider读取的,所以我无法传递。
我已尝试在不同的类中声明dataProvider,但这并不起作用。请为它建议一些解决方法。
注意:我有一个限制,我无法使用TestNG.xml来实现此方案。
请找到以下代码:
的DataProvider:
@DataProvider(name = "TestSuite")
public Object[][] dataSheetTraverser() {
String SheetName = "ProgLang";
datatable = new Xls_Reader(TestDataSheetPath_ProgLang);
int rowcount = datatable.getRowCount(SheetName);
Object result[][] = new Object[rowcount - 1][3];
for (int i = 2; i < rowcount + 1; i++) {
result[i - 2][0] = SheetName;
result[i - 2][1] = i;
result[i - 2][2] = datatable.getCellData(SheetName, "caseType", i);
}
return result;
}
测试方法:
@Test(dataProvider="TestSuite_ProgLang",priority =2)
public void TC_Verify_EditProgLang(String SheetName,int i, String caseType)
{
String test1= datatable.getCellData(SheetName, "Skills", i);
String test2= datatable.getCellData(SheetName, "Version", i);
String test3= datatable.getCellData(SheetName, "LastUsed", i);
String test4= datatable.getCellData(SheetName, "ExperienceYr", i);
String ExperienceMn = datatable.getCellData(SheetName, "ExperienceMn", i);
proglang.FillForm_ProgLang(Skills, Version, LastUsed, ExperienceYr, ExperienceMn);
}
我想从另一个类调用上面的函数 TC_Verify_EditProgLang 。请建议。
答案 0 :(得分:1)
您可以使用dataProviderClass
属性从其他班级拨打电话
在@Test和提供者方法中必须是static
:
public class StaticProvider {
@DataProvider(name = "create")
public static Object[][] createData() {
return new Object[][] {
new Object[] { new Integer(42) }
};
}
}
//different Class
public class MyTest {
@Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
public void test(Integer n) {
// ...
}
}
请查看文档:{{3}}