package test.factory; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import org.testng.annotations.Factory; import org.testng.annotations.Test; public class NestedFactoryTest { private int m_capacity = 2; private float m_loadFactor = 0.4f; public class NestedFactory { @Factory public Object[] createInstances() { return new NestedFactoryTest[] { new NestedFactoryTest(1, 0.1f), new NestedFactoryTest(10, 0.5f), }; } }; private static int m_instanceCount = 0; public NestedFactoryTest() { m_instanceCount++; } public NestedFactoryTest(int capacity, float loadFactor) { m_instanceCount++; this.m_capacity=capacity; this.m_loadFactor=loadFactor; } @Test public void verify() { // Should have three instances: the default one created by TestNG // and two created by the factory assertEquals(m_instanceCount, 3); assertTrue((m_capacity == 1 && m_loadFactor == 0.1f) || m_capacity == 10 && m_loadFactor == 0.5f); } private static void ppp(String s) { System.out.println("[NestedFactoryTest] " + s); } }