1ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustpackage test.groupinvocation; 2ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 3ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport org.testng.TestListenerAdapter; 4ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport org.testng.TestNG; 5ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport org.testng.annotations.Test; 6ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport org.testng.xml.XmlSuite; 7ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport org.testng.xml.XmlTest; 8ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 9ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport test.SimpleBaseTest; 10ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 11ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustimport java.util.Arrays; 12ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 13ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust/** 14ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust * Test that <suite> tags can have groups. 15ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust */ 16ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust@Test 17ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beustpublic class GroupSuiteTest extends SimpleBaseTest { 18ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 19ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void includeFromSuite0() { 20ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g(), g(), g("a", "b", "c")); 21ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 22ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 23ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void includeFromSuite1() { 24ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g("a"), g(), g("a")); 25ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 26ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 27ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void includeFromSuite2() { 28ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g("a", "b"), g(), g("a", "b")); 29ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 30ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 31ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void excludeFromSuite1() { 32ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g(), g("a"), g("b", "c")); 33ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 34ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 35ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void excludeFromSuite2() { 36ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g(), g("a", "b"), g("c")); 37ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 38ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 39ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust @Test(description = "Include in both suite and test") 40ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void includeTestAndSuite1() { 41ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g("a"), g(), g("b"), g(), g("a", "b")); 42ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 43ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 44ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust @Test(description = "Include in suite, exclude in test") 45ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust public void excludeTestAndSuite2() { 46ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(g(), g("a"), g(), g("a"), g("b", "c")); 47ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 48ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 49ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust private void runWithSuite(String[] suiteGroups, String[] excludedSuiteGroups, 50ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust String[] methods) { 51ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust runWithSuite(suiteGroups, excludedSuiteGroups, g(), g(), methods); 52ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 53ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 54ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust private void runWithSuite(String[] suiteGroups, String[] excludedSuiteGroups, 55ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust String[] testGroups, String[] excludedTestGroups, 56ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust String[] methods) { 57ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust XmlSuite s = createXmlSuite("Groups"); 58ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust s.setIncludedGroups(Arrays.asList(suiteGroups)); 59ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust s.setExcludedGroups(Arrays.asList(excludedSuiteGroups)); 60ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust XmlTest t = createXmlTest(s, "Groups-test", GroupSuiteSampleTest.class.getName()); 61ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust t.setIncludedGroups(Arrays.asList(testGroups)); 62ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust t.setExcludedGroups(Arrays.asList(excludedTestGroups)); 63ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust TestListenerAdapter tla = new TestListenerAdapter(); 64ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust TestNG tng = create(); 65ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust tng.addListener(tla); 66ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust tng.setXmlSuites(Arrays.asList(new XmlSuite[] { s })); 67ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust tng.run(); 68ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 69ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust verifyPassedTests(tla, methods); 70ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 71ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust 72ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust private String[] g(String... groups) { 73ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust return groups; 74ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust } 75ba016b8e709f9707040c03a1fef711df9f5cd168Cédric Beust} 76