1 import java.io.BufferedReader; 2 import java.io.FileInputStream; 3 import java.io.IOException; 4 import java.io.InputStreamReader; 5 import java.util.ArrayList; 6 import java.util.List; 7 import org.testng.annotations.DataProvider; 8 import org.testng.annotations.Test; 9 10 /** 11 * 讀取csv文件 12 */ 13 public class File_CSV { 14 // 測試案例綁定DataProvider後自動循環執行 15 @Test(dataProvider="getData") 16 public void testSearch(String p1, String p2) { 17 System.out.println(p1 + " " + p2); 18 } 19 20 // 定義數據驅動 21 @DataProvider(name = "getData") 22 public static Object[][] getData() throws IOException { 23 return getTestData(".\\testData\\testDate.csv"); 24 } 25 26 // 讀取CSV文件的靜態方法,使用CSV文件的絕對文件路徑做爲函數參數 27 public static Object[][] getTestData(String fileName) throws IOException { 28 List<String[]> records = new ArrayList<String[]>(); 29 String record; 30 // 設定UTF-8字符集,使用帶緩衝區的字符輸入流BufferedReader讀取文件內容 31 BufferedReader file = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8")); 32 // file.readLine(); //跳過表頭所在的行 33 34 // 遍歷數據行並存儲在名爲records的ArrayList中,每一行records中存儲的對象爲一個String數組 35 while ((record = file.readLine()) != null) { 36 String fields[] = record.split(","); 37 records.add(fields); 38 } 39 // 關閉文件 40 file.close(); 41 // 將存儲測試數據的List轉換爲一個Object的二維數組 42 Object[][] results = new Object[records.size()][]; 43 // 設置二位數組每行的值,每行是一個Object對象 44 for (int i = 0; i < records.size(); i++) { 45 results[i] = (Object[]) records.get(i); 46 } 47 return results; 48 } 49 }
testDate.csv文件內容:java