Home | History | Annotate | Download | only in test
      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 
     23   public static TestNG create() {
     24     TestNG result = new TestNG();
     25     result.setUseDefaultListeners(false);
     26     result.setVerbose(0);
     27     return result;
     28   }
     29 
     30   public static TestNG create(Class<?>... testClasses) {
     31     TestNG result = create();
     32     result.setTestClasses(testClasses);
     33     return result;
     34   }
     35 
     36   protected TestNG create(XmlSuite... suites) {
     37     TestNG result = create();
     38     result.setXmlSuites(Arrays.asList(suites));
     39     return result;
     40   }
     41 
     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 
     52   protected XmlSuite createXmlSuite(String name) {
     53     XmlSuite result = new XmlSuite();
     54     result.setName(name);
     55     return result;
     56   }
     57 
     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 
     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 
     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 
     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 
    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    */
    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