Home | History | Annotate | Download | only in xml
      1 package test.dependent.xml;
      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.annotations.DataProvider;
      8 import org.testng.annotations.Test;
      9 import org.testng.xml.XmlSuite;
     10 import org.testng.xml.XmlTest;
     11 
     12 import test.SimpleBaseTest;
     13 
     14 import java.util.Arrays;
     15 import java.util.List;
     16 
     17 public class GroupDependencyTest extends SimpleBaseTest {
     18   @DataProvider
     19   public Object[][] dp() {
     20     return new Object[][] {
     21       new Object[] { new String[] { "a", "b", "c", "a1", "b1", "c1" } },
     22       new Object[] { new String[] { "a", "c", "b", "a1", "c1", "b1" } },
     23       new Object[] { new String[] { "b", "a", "c", "b1", "a1", "c1" } },
     24       new Object[] { new String[] { "b", "c", "a", "b1", "c1", "a1" } },
     25       new Object[] { new String[] { "c", "b", "a", "c1", "b1", "a1" } },
     26       new Object[] { new String[] { "c", "a", "b", "c1", "a1", "b1" } },
     27     };
     28   }
     29 
     30   @Test(dataProvider = "dp")
     31   public void verifyGroupSingle(String[] a) {
     32     configureGroup(a, false /* single */);
     33   }
     34 
     35   @Test(dataProvider = "dp")
     36   public void verifyGroupMulti(String[] a) {
     37     configureGroup(a, true /* multi */);
     38   }
     39 
     40   private void configureGroup(String[] a, boolean multi) {
     41     XmlSuite suite = createXmlSuite("Dependencies");
     42     XmlTest test =
     43         createXmlTest(suite, "DependencyTest", GroupDependencySampleTest.class.getName());
     44     if (multi) {
     45       test.addXmlDependencyGroup(a[2], a[1] + " " + a[0]);
     46     } else {
     47       test.addXmlDependencyGroup(a[2], a[1]);
     48       test.addXmlDependencyGroup(a[1], a[0]);
     49     }
     50 
     51     TestNG tng = create();
     52     tng.setXmlSuites(Arrays.asList(suite));
     53     TestListenerAdapter tla = new TestListenerAdapter();
     54     tng.addListener(tla);
     55     tng.run();
     56 
     57     List<ITestResult> t = tla.getPassedTests();
     58     String method2 = t.get(2).getMethod().getMethodName();
     59     if (multi) {
     60       // When we have "a depends on groups b and c", the only certainty is that "a"
     61       // will be run last
     62       Assert.assertEquals(method2, a[5]);
     63     } else {
     64       assertTestResultsEqual(tla.getPassedTests(), Arrays.asList(a[3], a[4], a[5]));
     65     }
     66   }
     67 }
     68