我对TestNg有问题,我在Selenium中使用Java。我有来自TestNG的消息:
testNG:org.testng.internal.reflect.MethodMatcherException:[public 虚空 utils.ExcelDataProvider.test1(java.lang.Object [] [],org.testng.ITestContext) 抛出java.lang.InterruptedException]没有定义参数,但是 被发现正在使用数据提供者(明确指定或 从类级别的注释继承)。数据提供者不匹配方法: test1([Parameter {index = 0,type = [[Ljava.lang.Object ;, clarifiedAnnotations = []},参数{index = 1, type = org.testng.ITestContext,clarifiedAnnotations = []}])]
这是我的@Test
@Test(dataProvider = "test1data")
public void test1(Object[][] data,ITestContext context) throws InterruptedException {
ExcelUtils excel = new ExcelUtils(path, 0);
int rowCount=excel.getRowCount();
int colCount=excel.getColCount();
String iter = context.getCurrentXmlTest().getParameter("iterations");
Execute.execute(data,iter);
}
这是我的数据提供者
@DataProvider(name = "test1data")
public Object[][] getData() {
Object data[][]=testData(path, 0);
return data;
}
方法:
public Object[][] testData(String path, int sheetIndex) {
ExcelUtils excel = new ExcelUtils(path, sheetIndex);
int rowCount=excel.getRowCount();
int colCount=excel.getColCount();
Object data[][] = new Object[rowCount][colCount];
for(int j=0; j<colCount; j++){
for(int i=0;i<rowCount ;i++ ){
String cellData=excel.getCellData(i, j);
// System.out.println("cellData "+cellData);
data[j][i] = cellData;
}
}
return data;
}
如果我写
public void test1(Object[] data,ITestContext context) throws InterruptedException {
它有效(Object[]
),但我需要一个二维数组。
你知道怎么了吗?
我正在尝试读取excel,我希望第一列为KEY列,而其他列为每次执行的数据。
谢谢
由于测试数据与测试方法参数不匹配而发生错误。
您的问题的解决方案:
@DataProvider(name = "test1data")
public Object[][] getData() {
Object data[][] = testData(path, 0);
return new Object[][] { { data } };
}
原因:具有返回类型2d数组的DataProvider用于执行相同的测试不同数据。
使其更加清晰
public class DP
{
@DataProvider (name = "data-provider")
public Object[][] dpMethod(){
return new Object[][] {{"First-Value"}, {"Second-Value"}};
}
@Test (dataProvider = "data-provider")
public void myTest (String val) {
System.out.println("Passed Parameter Is : " + val);
}
}
以下代码将产生结果
PASSED: myTest("First-Value")
PASSED: myTest("Second-Value")