1 package test; 2 3 import org.testng.Assert; 4 import org.testng.ITestResult; 5 import org.testng.TestListenerAdapter; 6 import org.testng.TestNG; 7 import org.testng.collections.Lists; 8 import org.testng.internal.Utils; 9 import org.testng.xml.XmlClass; 10 import org.testng.xml.XmlInclude; 11 import org.testng.xml.XmlSuite; 12 import org.testng.xml.XmlTest; 13 14 import java.io.File; 15 import java.util.Arrays; 16 import java.util.Iterator; 17 import java.util.List; 18 19 public class SimpleBaseTest { 20 // System property specifying where the resources (e.g. xml files) can be found 21 private static final String TEST_RESOURCES_DIR = "test.resources.dir"; 22 create()23 public static TestNG create() { 24 TestNG result = new TestNG(); 25 result.setUseDefaultListeners(false); 26 result.setVerbose(0); 27 return result; 28 } 29 create(Class<?>.... testClasses)30 public static TestNG create(Class<?>... testClasses) { 31 TestNG result = create(); 32 result.setTestClasses(testClasses); 33 return result; 34 } 35 create(XmlSuite... suites)36 protected TestNG create(XmlSuite... suites) { 37 TestNG result = create(); 38 result.setXmlSuites(Arrays.asList(suites)); 39 return result; 40 } 41 createTests(String suiteName, Class<?>... testClasses)42 protected TestNG createTests(String suiteName, Class<?>... testClasses) { 43 XmlSuite suite = createXmlSuite(suiteName); 44 int i=0; 45 for (Class<?> testClass : testClasses) { 46 createXmlTest(suite, testClass.getName() + i, testClass); 47 i++; 48 } 49 return create(suite); 50 } 51 createXmlSuite(String name)52 protected XmlSuite createXmlSuite(String name) { 53 XmlSuite result = new XmlSuite(); 54 result.setName(name); 55 return result; 56 } 57 createXmlTest(XmlSuite suite, String name, Class clazz, Class... classes)58 protected XmlTest createXmlTest(XmlSuite suite, String name, Class clazz, Class... classes) { 59 XmlTest result = new XmlTest(suite); 60 int index = 0; 61 result.setName(name); 62 XmlClass xc = new XmlClass(clazz.getName(), index++, true /* load classes */); 63 result.getXmlClasses().add(xc); 64 for (Class c : classes) { 65 xc = new XmlClass(c.getName(), index++, true /* load classes */); 66 result.getXmlClasses().add(xc); 67 } 68 69 return result; 70 } 71 createXmlTest(XmlSuite suite, String name, String... classes)72 protected XmlTest createXmlTest(XmlSuite suite, String name, String... classes) { 73 XmlTest result = new XmlTest(suite); 74 int index = 0; 75 result.setName(name); 76 for (String c : classes) { 77 XmlClass xc = new XmlClass(c, index++, true /* load classes */); 78 result.getXmlClasses().add(xc); 79 } 80 81 return result; 82 } 83 addMethods(XmlClass cls, String... methods)84 protected void addMethods(XmlClass cls, String... methods) { 85 int index = 0; 86 for (String m : methods) { 87 XmlInclude include = new XmlInclude(m, index++); 88 cls.getIncludedMethods().add(include); 89 } 90 } 91 getPathToResource(String fileName)92 public static String getPathToResource(String fileName) { 93 String result = System.getProperty(TEST_RESOURCES_DIR); 94 if (result == null) { 95 throw new IllegalArgumentException("System property " + TEST_RESOURCES_DIR + " was not defined."); 96 } 97 return result + File.separatorChar + fileName; 98 } 99 verifyPassedTests(TestListenerAdapter tla, String... methodNames)100 protected void verifyPassedTests(TestListenerAdapter tla, String... methodNames) { 101 Iterator<ITestResult> it = tla.getPassedTests().iterator(); 102 Assert.assertEquals(tla.getPassedTests().size(), methodNames.length); 103 104 int i = 0; 105 while (it.hasNext()) { 106 Assert.assertEquals(it.next().getName(), methodNames[i++]); 107 } 108 } 109 110 /** 111 * Compare a list of ITestResult with a list of String method names, 112 */ assertTestResultsEqual(List<ITestResult> results, List<String> methods)113 public static void assertTestResultsEqual(List<ITestResult> results, List<String> methods) { 114 List<String> resultMethods = Lists.newArrayList(); 115 for (ITestResult r : results) { 116 resultMethods.add(r.getMethod().getMethodName()); 117 } 118 Assert.assertEquals(resultMethods, methods); 119 } 120 121 } 122