package test.factory; import org.testng.annotations.AfterSuite; import org.testng.annotations.Factory; import org.testng.annotations.Parameters; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; public class FactoryTest { static boolean isInvoked = false; @Parameters({ "factory-param" }) @Factory public Object[] createObjects(String param) { assertEquals(param, "FactoryParam"); assertFalse(isInvoked, "Should only be invoked once"); isInvoked = true; return new Object[] { new FactoryTest2(42), new FactoryTest2(43) }; } @AfterSuite public void afterSuite() { isInvoked = false; } }