2017-06-02 44 views
0

我對Java和TestNg很新穎。我已經創建了下面的DataProvider來將hashmap返回給我的測試方法,但它似乎失敗了,我無法確定問題出在哪裏。我正在讀取一個excel文件到一個hashmap中並將其存儲在列表中。然後我想要返回對象中的散列表。從TestNg DataProvider返回一個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

我已經將方法更改爲靜態,並且現在可以工作。 – Pablo

+0

你可能想發佈你的答案,然後接受它,以便問題得到解決。 –

回答

0

如果你是說加靜態屬性固定您的問題就意味着你試圖從外部類中使用數據提供者。對於這種情況,數據提供者方法必須是靜態的。如果您的測試方法和數據提供者都在同一個類中,則可以省略靜態屬性。

0

將方法更改爲靜態修復問題。正如RocketRaccoon回答的那樣,我不得不將它改爲靜態,因爲數據提供者與測試不同。