blob: a8603bd8b52e5b6442fa417c6a901db58efb8a69 [file] [log] [blame]
package test.dependent.xml;
import org.testng.Assert;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import org.testng.TestNG;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
import test.SimpleBaseTest;
import java.util.Arrays;
import java.util.List;
public class GroupDependencyTest extends SimpleBaseTest {
@DataProvider
public Object[][] dp() {
return new Object[][] {
new Object[] { new String[] { "a", "b", "c", "a1", "b1", "c1" } },
new Object[] { new String[] { "a", "c", "b", "a1", "c1", "b1" } },
new Object[] { new String[] { "b", "a", "c", "b1", "a1", "c1" } },
new Object[] { new String[] { "b", "c", "a", "b1", "c1", "a1" } },
new Object[] { new String[] { "c", "b", "a", "c1", "b1", "a1" } },
new Object[] { new String[] { "c", "a", "b", "c1", "a1", "b1" } },
};
}
@Test(dataProvider = "dp")
public void verifyGroupSingle(String[] a) {
configureGroup(a, false /* single */);
}
@Test(dataProvider = "dp")
public void verifyGroupMulti(String[] a) {
configureGroup(a, true /* multi */);
}
private void configureGroup(String[] a, boolean multi) {
XmlSuite suite = createXmlSuite("Dependencies");
XmlTest test =
createXmlTest(suite, "DependencyTest", GroupDependencySampleTest.class.getName());
if (multi) {
test.addXmlDependencyGroup(a[2], a[1] + " " + a[0]);
} else {
test.addXmlDependencyGroup(a[2], a[1]);
test.addXmlDependencyGroup(a[1], a[0]);
}
TestNG tng = create();
tng.setXmlSuites(Arrays.asList(suite));
TestListenerAdapter tla = new TestListenerAdapter();
tng.addListener(tla);
tng.run();
List<ITestResult> t = tla.getPassedTests();
String method2 = t.get(2).getMethod().getMethodName();
if (multi) {
// When we have "a depends on groups b and c", the only certainty is that "a"
// will be run last
Assert.assertEquals(method2, a[5]);
} else {
assertTestResultsEqual(tla.getPassedTests(), Arrays.asList(a[3], a[4], a[5]));
}
}
}