package test.thread; import org.testng.Assert; import org.testng.TestListenerAdapter; import org.testng.TestNG; import org.testng.annotations.Test; public class FactoryTest { @Test /** * In non-parallel mode, we should only have one thread id * for the two methods invoked on B. */ public void verifyFactoryNotParallel() { runTest(null, 1); } /** * In parallel mode "methods", we should have as many thread id's * as there are test methods on B (2). */ @Test public void verifyFactoryParallelMethods() { runTest("methods", 2); } @Test(groups = "broken", description = "Known bug: when parallel='tests', tests returned" + " by a @Factory are run in the same thread") public void verifyFactoryParallelTests() { runTest("tests", 2); } private void runTest(String parallelMode, int expectedThreadIdCount) { TestNG tng = new TestNG(); tng.setVerbose(0); tng.setTestClasses(new Class[] { FactorySampleTest.class}); if (parallelMode != null) { tng.setParallel(parallelMode); } TestListenerAdapter tla = new TestListenerAdapter(); tng.addListener(tla); B.setUp(); tng.run(); Assert.assertEquals(tla.getPassedTests().size(), 2); Assert.assertEquals(B.m_threadIds.size(), expectedThreadIdCount); // ppp("# TESTS RUN " + tla.getPassedTests().size() // + " ID:" + B.m_threadIds.size()); } private void ppp(String string) { System.out.println("[FactoryTest] " + string); } }