1package test.objectfactory; 2 3import org.testng.TestNG; 4import org.testng.TestNGException; 5import org.testng.annotations.AfterMethod; 6import org.testng.annotations.Test; 7import org.testng.xml.XmlClass; 8import org.testng.xml.XmlSuite; 9import test.TestHelper; 10 11/** 12 * @author Hani Suleiman Date: Mar 6, 2007 Time: 3:52:19 PM 13 */ 14public class CustomFactoryTest { 15 @Test 16 public void setFactoryOnTestNG() { 17 XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); 18 // suite.setObjectFactory(new LoggingObjectFactory()); 19 TestNG tng = TestHelper.createTestNG(suite); 20 tng.setObjectFactory(LoggingObjectFactory.class); 21 tng.run(); 22 assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " 23 + LoggingObjectFactory.invoked + " times"; 24 } 25 26 @AfterMethod 27 public void resetCount() { 28 LoggingObjectFactory.invoked = 0; 29 } 30 31 @Test 32 public void setFactoryOnSuite() { 33 XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); 34 suite.setObjectFactory(new LoggingObjectFactory()); 35 TestNG tng = TestHelper.createTestNG(suite); 36 tng.run(); 37 assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " 38 + LoggingObjectFactory.invoked + " times"; 39 } 40 41 @Test(enabled = false, description = "This broke after I made the change to enable AbstractTest") 42 public void setFactoryByAnnotation() { 43 XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); 44 suite.getTests().get(0).getXmlClasses() 45 .add(new XmlClass("test.objectfactory.MyFactoryFactory")); 46 TestNG tng = TestHelper.createTestNG(suite); 47 tng.run(); 48 assert LoggingObjectFactory.invoked == 1 : "Logging factory invoked " 49 + LoggingObjectFactory.invoked + " times"; 50 } 51 52 @Test 53 public void factoryReceivesContext() { 54 XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); 55 suite.getTests().get(0).getXmlClasses() 56 .add(new XmlClass("test.objectfactory.ContextAwareFactoryFactory")); 57 TestNG tng = TestHelper.createTestNG(suite); 58 tng.run(); 59 } 60 61 @Test(expectedExceptions = TestNGException.class) 62 public void setInvalidMethodFactoryByAnnotation() { 63 XmlSuite suite = TestHelper.createSuite("test.objectfactory.Simple", "objectfactory"); 64 suite.getTests().get(0).getXmlClasses() 65 .add(new XmlClass("test.objectfactory.BadMethodFactoryFactory")); 66 TestNG tng = TestHelper.createTestNG(suite); 67 tng.run(); 68 } 69} 70