DataProvider

Как получать данные из CSV для тестов на TestNG

В TestNG Есть клевая приблуда для предоставления данных тестам под названием DataProvider. Но удобнее ведь хранить данные во внешних файлах. Например, в случае .csv файла новый тест кейс таким образом создается тупо добавлением новой строчки в .csv таблицу. Написанный ниже DataProvider запускает тест каждый раз, как находит новую строчку в .csv файле, пропуская первую строчку, т.к. мы принимаем её за заголовок.

@DataProvider(name = "Data")  
    public Iterator<Object []> dataReader() throws InterruptedException {  
        List<Object []> dataLines = new ArrayList<>();  
        boolean notDataHeader = false;  
        String[] data;  
        BufferedReader br;  
        String line;  
        String workingDirectory = System.getProperty("user.dir");  
        String filePath = workingDirectory + "\\TestNG\\data\\" + dataFile;  
  
        try {  
            br = new BufferedReader(new FileReader(filePath));  
            while ((line = br.readLine()) != null) {  
                data = line.split(";");  
                if (notDataHeader) dataLines.add(data);  
                notDataHeader = true;  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return dataLines.iterator();  
    }

Как подсунуть DataProvider к тесту и так ясно:

@Test(description="Описание теста", dataProvider = "Data")  
    public void pay(String uin, String price) throws Exception {  
       dotest();  
    }

Это .csv файл с двумя значениями, подходящий к данному примеру. Если нужно добавить значений, не забываем добавить столько же входных параметров для функции public void pay:

uin;price  
12;990