TestRunner.java
public static void main(String[] args) {
List<String> platformVersions = new ArrayList<>(){{add("14.0");add("11.0")}};
for (String platformVersion: platformVersions) {
XmlSuite suite = new XmlSuite();
suite.setName(configuration.getPlatform() + " " + platformVersion);
XmlTest test = new XmlTest(suite);
test.setName("Fragmentation run for : " + suite.getName());
List<XmlClass> classes = new ArrayList<>();
XmlClass xmlClass1 = new XmlClass("io.demo.ClassOne");
XmlClass xmlClass2 = new XmlClass(""io.demo.ClassTwo"")
classes.add(xmlClass);
test.setXmlClasses(classes);
test.setParallel(XmlSuite.ParallelMode.METHODS);
suite.setThreadCount(Integer.parseInt(System.getProperty("threadcount", "5")));
suite.setIncludedGroups(Arrays.asList(System.getProperty("groups").split(",")));
suite.setParameters(Map.of("platformVersion", platformVersion));
suites.add(suite);
}
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.addListener(tla);
testng.setParallel(XmlSuite.ParallelMode.NONE);
testng.setXmlSuites(suites);
testng.run();
}
BaseTest.java
@
BeforeSuite(alwaysRun = true)
@Parameters(value = "platformVersion")
public void initSuite(ITestContext context, @Optional String platformVersion) {
if (Objects.isNull(platformVersion) || (!platformVersion.isEmpty() && !platformVersion.isBlank())) // Here I am only getting platformVersion 14 for both the suites.
System.out.println("platformVersion: " + platformVersion);
else
System.out.println("Platform version not provided");
}
TestClass.java extending BaseTest.java
@Test
public void test1(){
System.out.println("This is test 1");
}
@Test
public void test2(){
System.out.println("This is test 2");
}
In the @BeforeSuite method, it should give two different values for two suites but it is giving only one value for both suites.
I need clarification on this.