Запуск тестов с использованием DataProvider в определенном потоке - PullRequest
2 голосов
/ 08 мая 2019

У меня есть DataProvider, который читает файл CSV, как показано ниже

john|26|mba
claire|33|bbl
knight|29|mpa

Теперь у меня есть три classes, у которых есть один @Test каждый

Имена классов

NameReader.java
ProcessStudent.java
ValidateDatabase.java

My NameReader.java имеет один метод @Test, который получает входные данные от вышеупомянутого поставщика данных.Так что в этом случае, если я выполню только NameReader.java, он будет запущен 3 раза, поскольку есть три строки

Но проблема в том, что я хочу, чтобы NameReader.Java принял 1-ю строку от поставщика данных и затем запустил ProcessStudent.java а затем запустите ValidateDatabase.java.Этот поток должен произойти и для оставшихся двух строк из DataProvider.

Но если я укажу свой testng.xml, как показано ниже

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test thread-count="1" name="Test" preserve-order="true">
    <classes>
      <class name="com.java.testng.NameReader"/>
      <class name="com.java.testng.ProcessStudent"/>
      <class name="com.java.testng.ValidateDatabase"/>
    </classes>
  </test>
</suite> 

Сначала он запускает @Test внутри NameReader.java 3 раза, а затем переходит к @Test внутри ProcessStudent.java а затем к @Test внутри ValidateDatabase.java.

Пожалуйста, помните, мне не нужно использовать вышеупомянутое DataProvider в ProcessStudent.java или ValidateDatabase.java

Как мне достичь того, что мне нужно?

1 Ответ

0 голосов
/ 10 мая 2019

Вызовите тестовые методы ProcessStudent и ValidateDatabase из тестового метода NameReader.Пришлось объявить методы тестирования ProcessStudent и ValidateDatabase как статические методы.

public class NameReader {

@Test(dataProvider = "getData")
public void testNameReader(String str1, String str2) {

    System.out.println("data set = "+str1+"  "+str2);
    System.out.println("NameReader ends");

    ProcessStudent.testClassB();
    ValidateDatabase.testClassC();
}

@DataProvider
public Object[][] getData(){
//data set here
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...