package test.thread; import org.testng.Assert; import org.testng.TestNG; import org.testng.annotations.Test; import org.testng.collections.Lists; import org.testng.xml.XmlClass; import org.testng.xml.XmlSuite; import org.testng.xml.XmlTest; import test.BaseTest; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class ParallelTestTest extends BaseTest { @Test public void verifyParallelNone() { verifyExpected(XmlSuite.ParallelMode.NONE, 1); } @Test public void verifyParallelTests() { verifyExpected(XmlSuite.ParallelMode.TESTS, 2); } @Test public void verifyParallelMethods() { verifyExpected(XmlSuite.ParallelMode.METHODS, 4); } @Test public void verifyParallelClasses() { verifyExpected(XmlSuite.ParallelMode.CLASSES, 2); } @Test public void verifyParallelClassesWithFactory() { verifyExpected(XmlSuite.ParallelMode.INSTANCES, 2, ParallelWithFactorySampleTest.class.getName()); } @Test public void verifyNonParallelClassesWithFactory() { verifyExpected(XmlSuite.ParallelMode.NONE, 1, ParallelWithFactorySampleTest.class.getName()); } public static final String CLASS1 = "test.thread.Test1Test"; public static final String CLASS2 = "test.thread.Test2Test"; private void createTest(XmlSuite xmlSuite, String className) { XmlTest result = new XmlTest(xmlSuite); List classes = result.getXmlClasses(); XmlClass xmlClass = new XmlClass(className); classes.add(xmlClass); } private void verifyExpected(XmlSuite.ParallelMode parallelMode, int expectedThreadCount) { verifyExpected(parallelMode, expectedThreadCount, CLASS1, CLASS2); } private void verifyExpected(XmlSuite.ParallelMode parallelMode, int expectedThreadCount, String... classNames) { XmlSuite xmlSuite = new XmlSuite(); xmlSuite.setName("ParallelTestTest"); xmlSuite.setParallel(parallelMode); for (String cn : classNames) { createTest(xmlSuite, cn); } TestNG tng = new TestNG(); tng.setVerbose(0); tng.setXmlSuites(Arrays.asList(new XmlSuite[] { xmlSuite })); Helper.reset(); tng.run(); List> maps = Lists.newArrayList(); for (String c : classNames) { maps.add(Helper.getMap(c)); }; Map mergedMap = new HashMap<>(); for (Mapm : maps) { mergedMap.putAll(m); } Assert.assertEquals(mergedMap.size(), expectedThreadCount); } private static void ppp(String s) { if (false) { System.out.println("[SequentialTest] " + s); } } }