1package test.listeners; 2 3import org.testng.Assert; 4import org.testng.IExecutionListener; 5import org.testng.TestNG; 6import org.testng.annotations.Test; 7import org.testng.xml.XmlSuite; 8import org.testng.xml.XmlTest; 9 10import test.SimpleBaseTest; 11 12import java.util.Arrays; 13 14public class ExecutionListenerTest extends SimpleBaseTest { 15 16 public static class ExecutionListener implements IExecutionListener { 17 public static boolean m_start = false; 18 public static boolean m_finish = false; 19 20 @Override 21 public void onExecutionStart() { 22 m_start = true; 23 } 24 25 @Override 26 public void onExecutionFinish() { 27 m_finish = true; 28 } 29 } 30 31 @Test 32 public void executionListenerWithXml() { 33 runTest(ExecutionListener1SampleTest.class, true /* add listener */, true /* should run */); 34 } 35 36 @Test 37 public void executionListenerWithoutListener() { 38 runTest(ExecutionListener1SampleTest.class, false /* don't add listener */, 39 false /* should not run */); 40 } 41 42 @Test 43 public void executionListenerAnnotation() { 44 runTest(ExecutionListener2SampleTest.class, false /* don't add listener */, 45 true /* should run */); 46 } 47 48 private void runTest(Class<?> listenerClass, boolean addListener, boolean expected) { 49 XmlSuite s = createXmlSuite("ExecutionListener"); 50 XmlTest t = createXmlTest(s, "Test", listenerClass.getName()); 51 52 if (addListener) { 53 s.addListener(ExecutionListener.class.getName()); 54 } 55 TestNG tng = create(); 56 tng.setXmlSuites(Arrays.asList(s)); 57 ExecutionListener.m_start = false; 58 ExecutionListener.m_finish = false; 59 tng.run(); 60 61 Assert.assertEquals(ExecutionListener.m_start, expected); 62 Assert.assertEquals(ExecutionListener.m_finish, expected); 63 } 64} 65