package test.objectfactory; import org.testng.Assert; import org.testng.TestNG; import org.testng.TestNGException; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.testng.xml.XmlSuite; import test.SimpleBaseTest; public class CustomFactoryTest extends SimpleBaseTest { @BeforeMethod public void resetCount() { LoggingObjectFactory.invoked = 0; } @Test public void setFactoryOnTestNG() { TestNG tng = create(SimpleSample.class); tng.setObjectFactory(LoggingObjectFactory.class); tng.run(); Assert.assertEquals(LoggingObjectFactory.invoked, 1); } @Test public void setFactoryOnSuite() { XmlSuite suite = createXmlSuite("objectfactory", "TmpTest", SimpleSample.class); suite.setObjectFactory(new LoggingObjectFactory()); TestNG tng = create(suite); tng.run(); Assert.assertEquals(LoggingObjectFactory.invoked, 1); } @Test(description = "This broke after I made the change to enable AbstractTest") public void setFactoryByAnnotation() { XmlSuite suite = createXmlSuite("objectfactory", "TmpTest", SimpleSample.class, MyObjectFactoryFactory.class); TestNG tng = create(suite); tng.run(); Assert.assertEquals(LoggingObjectFactory.invoked, 1); } @Test public void factoryReceivesContext() { XmlSuite suite = createXmlSuite("objectfactory", "TmpTest", SimpleSample.class, ContextAwareObjectFactoryFactory.class); suite.setObjectFactory(new LoggingObjectFactory()); TestNG tng = create(suite); tng.run(); Assert.assertEquals(LoggingObjectFactory.invoked, 1); } @Test(expectedExceptions = TestNGException.class) public void setInvalidMethodFactoryByAnnotation() { XmlSuite suite = createXmlSuite("objectfactory", "TmpTest", SimpleSample.class, BadMethodObjectFactoryFactory.class); TestNG tng = create(suite); tng.run(); } }