Я пытаюсь запустить TestNG Suite в параллельном режиме, но хочу, чтобы динамическое изменение threadCount зависело от внешних параметров.
Если число тестов = threadCount (params Number) - я могу сделать это с помощью API TestNG в таким образом:
List<String> params = Arrays.asList("1", "2");
suite.setThreadCount(params.size());
suite.setParallel(XmlSuite.ParallelMode.TESTS);
List<XmlTest> xmlTests = suite.getTests();
for (int i = 0; i < xmlTests.size(); i++) {
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("param", params.get(i));
xmlTests.get(i).setParameters(paramsMap);
}
Но если число тестов> threadCount (params Number), я хочу установить параметры соответственно для threadCount:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="TestNG suite" parallel="tests" thread-count="2">
<test name="Test 1">
<parameter name="param" value="1"/>
<classes>
<class name="tests.Tests_1">
</class>
</classes>
</test>
<test name="Test 2">
<parameter name="param" value="2"/>
<classes>
<class name="tests.Tests_2">
</class>
</classes>
</test>
<test name="Test 3">
<parameter name="param" value="1"/>
<classes>
<class name="tests.Tests_3">
</class>
</classes>
</test>
</suite>
Например, для 2 threadCount и 6 тестовых наборов параметров: 1, 2, 1, 2, 1, 2;
Для 3 threadCount и 5 тестовых наборов: 1 , 2, 3, 1, 2
Как перебирать тесты и задавать соответствующие параметры?