问题从TestNg DataProvider返回Hashmap

时间:2017-06-02 02:12:08

标签: java testng

我是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;
}

2 个答案:

答案 0 :(得分:0)

如果您说添加静态属性修复了您的问题,则意味着您尝试使用外部类的数据提供程序。对于这种情况,数据提供者方法必须是静态的。如果您的测试方法和数据提供程序都在同一个类中,则可以省略静态属性。

答案 1 :(得分:0)

将方法更改为静态修复了问题。正如RocketRaccoon所回答的,我不得不将其更改为静态,因为数据提供程序与测试属于不同的类。

相关问题