package test.objectfactory; import java.lang.reflect.Constructor; import org.testng.Assert; import org.testng.IObjectFactory; import org.testng.annotations.ObjectFactory; import org.testng.annotations.Test; @SuppressWarnings("serial") public class CombinedTestAndObjectFactorySample implements IObjectFactory{ private boolean configured = false; @ObjectFactory public IObjectFactory create() { return new CombinedTestAndObjectFactorySample(); } @Test public void isConfigured() { Assert.assertTrue(configured, "Should have been configured by object factory"); } @SuppressWarnings("unchecked") public Object newInstance(Constructor constructor, Object... params) { Object o; try { o = constructor.newInstance(params); } catch (Exception e) { throw new RuntimeException(e); } if (CombinedTestAndObjectFactorySample.class.equals(o.getClass())) { CombinedTestAndObjectFactorySample s = (CombinedTestAndObjectFactorySample) o; s.configured = true; } return o; } }