package test.listeners; import org.testng.Assert; import org.testng.IAlterSuiteListener; import org.testng.TestNG; 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 AlterSuiteListenerTest extends SimpleBaseTest { public static final String ALTER_SUITE_LISTENER = "AlterSuiteListener"; @Test public void executionListenerWithXml() { XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, AlterSuiteNameListener.class.getName()); Assert.assertEquals(suite.getName(), AlterSuiteNameListener.class.getSimpleName()); } @Test public void executionListenerWithoutListener() { XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, null/*Donot add the listener*/); Assert.assertEquals(suite.getName(), ALTER_SUITE_LISTENER); } @Test public void executionListenerWithXml2() { XmlSuite suite = runTest(AlterSuiteListener1SampleTest.class, AlterXmlTestsInSuiteListener.class.getName()); Assert.assertEquals(suite.getTests().size(), 2); } private XmlSuite runTest(Class<?> listenerClass, String listenerName) { XmlSuite s = createXmlSuite(ALTER_SUITE_LISTENER); createXmlTest(s, "Test", listenerClass.getName()); boolean addListener = (listenerName != null); if (addListener) { s.addListener(listenerName); } TestNG tng = create(); tng.setXmlSuites(Arrays.asList(s)); tng.run(); return s; } public static class AlterSuiteListener1SampleTest { @Test public void foo() { } } public static class AlterSuiteNameListener implements IAlterSuiteListener { @Override public void alter(List<XmlSuite> suites) { XmlSuite suite = suites.get(0); suite.setName(getClass().getSimpleName()); } } public static class AlterXmlTestsInSuiteListener implements IAlterSuiteListener { @Override public void alter(List<XmlSuite> suites) { XmlSuite suite = suites.get(0); List<XmlTest> tests = suite.getTests(); XmlTest test = tests.get(0); XmlTest anotherTest = new XmlTest(suite); anotherTest.setName("foo"); anotherTest.setClasses(test.getClasses()); } } }