package test.override; import org.testng.Assert; import org.testng.TestListenerAdapter; import org.testng.TestNG; import org.testng.annotations.Test; import org.testng.internal.Utils; import org.xml.sax.SAXException; import test.SimpleBaseTest; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; import java.util.Arrays; /** * Verify that command line switches override parameters in testng.xml. * * @author Cedric Beust <cedric@beust.com> */ public class OverrideTest extends SimpleBaseTest { private void runTest(String include, String exclude) { File f = Utils.createTempFile( "<suite name=\"S\">" + " <test name=\"T\">" + " <classes>" + " <class name=\"test.override.OverrideSampleTest\" />" + " </classes>" + " </test>" + "</suite>" ); TestNG tng = create(); TestListenerAdapter tla = new TestListenerAdapter(); tng.addListener(tla); if (include != null) tng.setGroups(include); if (exclude != null) tng.setExcludedGroups(exclude); tng.setTestSuites(Arrays.asList(f.getAbsolutePath())); tng.run(); Assert.assertEquals(tla.getPassedTests().size(), 1); } @Test(description = "Override -groups") public void overrideIncludeShouldWork() throws ParserConfigurationException, SAXException, IOException { runTest("goodGroup", null); } @Test(description = "Override -excludegroups") public void overrideExcludeShouldWork() throws ParserConfigurationException, SAXException, IOException { runTest(null, "badGroup"); } @Test(description = "Override -groups and -excludegroups") public void overrideIncludeAndExcludeShouldWork() throws ParserConfigurationException, SAXException, IOException { runTest("goodGroup", "badGroup"); } }