У меня есть dataProvider, который считывает данные из текстового файла.Testng split dataProvider между параллельными методами
@DataProvider (name = "dynamicDP", parallel = true)
public Iterator<Object> matchIDs() throws IOException {
final List<Object> list = new ArrayList<>();
for (final String line: Files.readAllLines(Paths.get("C:\\mypath"),
StandardCharsets.UTF_8))
list.add(new Object[]{ line});
return list.iterator();
}
Мой текстовый файл действительно просто он содержит только эти данные ниже (каждой пары букв на отдельной строке):
AA BB CC DD EE FF GG HH II KK
Вот мой тестовый класс:
public class dataProviderParallelTest {
@Test (dataProvider="dynamicDP")
public void verifyDPdata(String comingFromDP){
System.out.printf("%nDP#1..: "+comingFromDP);
}
@Test (dataProvider="dynamicDP")
public void verifyDPdata2(String comingFromDP){
System.out.printf("%nDP#2..: "+comingFromDP);
}
}
Вот результат:
[TestNG] Running:
C:\projects\test\currentTest.xml
DP#1..: AA
DP#2..: BB
DP#1..: BB
DP#2..: AA
DP#1..: CC
DP#2..: CC
DP#1..: DD
DP#1..: EE
DP#2..: EE
DP#2..: DD
DP#1..: FF
DP#2..: FF
DP#1..: GG
DP#1..: HH
DP#2..: HH
DP#2..: GG
DP#1..: II
DP#2..: II
DP#1..: KK
DP#2..: KK
===============================================
Regression
Total tests run: 20, Failures: 0, Skips: 0
===============================================
А вот мой файл XML, который я использую, чтобы начать свой тест:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Regression" parallel="methods" thread-count="2" data-provider-thread-count="2">
<test name="smokeTest11">
<classes>
<class name="regression.bo.dataProviderParallelTest"/>
</classes>
</test>
</suite>
То, что я пробовал: Я прочитал эту статью: cedricBlog и это StackOverflow post: stackOverFlow
Что я пытаюсь достичь: Я пытаюсь разделить данные между двумя потоками. На данный момент я только что достиг обоих потоков для выполнения тех же данных, предоставленных DP. Моя цель состоит в том, чтобы разделить данные между этими двумя методами и имеют такой вывод (данные DP совместно между 2 методами):
DP#1..: AA
DP#2..: BB
DP#1..: DD
DP#2..: EE
DP#1..: CC
DP#2..: GG
DP#1..: KK
DP#1..: HH
DP#2..: II
DP#2..: FF
Это даже возможно, или я что-то отсутствует? Заранее спасибо за вашу помощь!
Пропустив другой способ, будет хорошо для вас? –
Привет, Grzergorz, большое спасибо за ваш интерес. К сожалению, нет, потому что конечная цель состоит в том, чтобы выполнять их одновременно на разных узлах сетки. Но независимо, спасибо за вашу помощь. Я начинаю думать; что то, что я пытаюсь достичь, - это не хорошая практика с dataProvider. У меня есть «альтернативное» решение, но это Java-решение, а не решение testNG. В любом случае, все равно будет голосовать, любой, кто может это решить :) –
Будет также голосовать, мне удалось пропустить эти тесты (используя синхронизированную коллекцию), но я знаю, что это не желаемый результат. Каково ваше решение Java? –