我是Java和TestNg的新手。我创建了下面的DataProvider来将一个hashmap返回给我的测试方法,但它似乎失败了,我无法解决问题所在。我正在将一个excel文件读入一个hashmap并将其存储在列表中。然后我想在对象中返回hashmap。
任何建议表示赞赏
@DataProvider(name = "DataProvider")
public Object[][] getTestData() throws Exception {
LogUtil.error("in provider");
ExcelUtils.setExcelFile("C://testData.xlsx", "Sheet1");
int rowsUsed = ExcelUtils.getRowUsed();
int colsUsed = ExcelUtils.getColumns();
List<HashMap<String, String>> arrayMapList = new ArrayList<>();
HashMap<String, String> map;
for (int i = 0; i < rowsUsed; i++) {
map = new HashMap<>();
for (int j = 0; j < colsUsed; j++) {
map.put(ExcelUtils.getCellData(0, j), ExcelUtils.getCellData(i +1, j));
}
arrayMapList.add(map);
}
Object[][] obj = new Object[rowsUsed][1];
for (int i = 0; i <arrayMapList.size(); i++) {
obj[i][0] = arrayMapList.get(i);
}
return obj;
}
答案 0 :(得分:0)
如果您说添加静态属性修复了您的问题,则意味着您尝试使用外部类的数据提供程序。对于这种情况,数据提供者方法必须是静态的。如果您的测试方法和数据提供程序都在同一个类中,则可以省略静态属性。
答案 1 :(得分:0)
将方法更改为静态修复了问题。正如RocketRaccoon所回答的,我不得不将其更改为静态,因为数据提供程序与测试属于不同的类。