2017-06-02 1 views
0

私はJavaとTestNgのかなり新しいです。私はテストメソッドにハッシュマップを返すために、以下のDataProviderを作成しましたが、失敗しているようで、問題がどこにあるのか分かりません。私は、Excelファイルをハッシュマップに読み込み、これをリストに保存しています。私はオブジェクトのハッシュマップを返したいと思います。あなたは、静的なプロパティを追加すると、それはあなたが外部のクラスからデータプロバイダを使用しようとしたことを意味し、あなたの問題を修正することを言っている場合TestNg DataProviderからハッシュマップを返す問題

何かアドバイスは

@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の回答によれば、データプロバイダはテストとは異なるクラスになっていたため、静的に変更する必要がありました。

関連する問題