package test.listeners;
import org.testng.Assert;
import org.testng.IExecutionListener;
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;
public class ExecutionListenerTest extends SimpleBaseTest {
public static class ExecutionListener implements IExecutionListener {
public static boolean m_start = false;
public static boolean m_finish = false;
@Override
public void onExecutionStart() {
m_start = true;
}
@Override
public void onExecutionFinish() {
m_finish = true;
}
}
@Test
public void executionListenerWithXml() {
runTest(ExecutionListener1SampleTest.class, true /* add listener */, true /* should run */);
}
@Test
public void executionListenerWithoutListener() {
runTest(ExecutionListener1SampleTest.class, false /* don't add listener */,
false /* should not run */);
}
@Test
public void executionListenerAnnotation() {
runTest(ExecutionListener2SampleTest.class, false /* don't add listener */,
true /* should run */);
}
private void runTest(Class<?> listenerClass, boolean addListener, boolean expected) {
XmlSuite s = createXmlSuite("ExecutionListener");
XmlTest t = createXmlTest(s, "Test", listenerClass.getName());
if (addListener) {
s.addListener(ExecutionListener.class.getName());
}
TestNG tng = create();
tng.setXmlSuites(Arrays.asList(s));
ExecutionListener.m_start = false;
ExecutionListener.m_finish = false;
tng.run();
Assert.assertEquals(ExecutionListener.m_start, expected);
Assert.assertEquals(ExecutionListener.m_finish, expected);
}
}