package test.objectfactory; import org.testng.annotations.Test; import org.testng.annotations.AfterMethod; import org.testng.TestNG; import org.testng.TestNGException; import org.testng.xml.XmlSuite; import org.testng.xml.XmlClass; import test.TestHelper; /** * @author Hani Suleiman * Date: Mar 6, 2007 * Time: 3:52:19 PM */ public class CustomFactoryTest { @Test public void setFactoryOnTestNG() { XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); //suite.setObjectFactory(new LoggingObjectFactory()); TestNG tng = TestHelper.createTestNG(suite); tng.setObjectFactory(LoggingObjectFactory.class); tng.run(); assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " + LoggingObjectFactory.invoked + " times"; } @AfterMethod public void resetCount() { LoggingObjectFactory.invoked = 0; } @Test public void setFactoryOnSuite() { XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); suite.setObjectFactory(new LoggingObjectFactory()); TestNG tng = TestHelper.createTestNG(suite); tng.run(); assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " + LoggingObjectFactory.invoked + " times"; } @Test public void setFactoryByAnnotation() { XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); suite.getTests().get(0).getXmlClasses().add(new XmlClass("test.objectfactory.MyFactoryFactory")); TestNG tng = TestHelper.createTestNG(suite); tng.run(); assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " + LoggingObjectFactory.invoked + " times"; } @Test public void factoryReceivesContext() { XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); suite.getTests().get(0).getXmlClasses().add(new XmlClass("test.objectfactory.ContextAwareFactoryFactory")); TestNG tng = TestHelper.createTestNG(suite); tng.run(); } @Test(expectedExceptions = TestNGException.class) public void setInvalidMethodFactoryByAnnotation() { XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); suite.getTests().get(0).getXmlClasses().add(new XmlClass("test.objectfactory.BadMethodFactoryFactory")); TestNG tng = TestHelper.createTestNG(suite); tng.run(); } }