diff options
author | Julien Herr <julien.herr@alcatel-lucent.com> | 2015-11-05 15:53:08 +0100 |
---|---|---|
committer | Julien Herr <julien.herr@alcatel-lucent.com> | 2015-11-05 15:57:32 +0100 |
commit | f325d9aa7a9505526a2ec933349aaf227ac23b43 (patch) | |
tree | 25a22cd1697cb3bbf711836fd6ad839a074329b0 /src/main/java/org/testng/internal | |
parent | 2c12573be25c3019f5060fb4c905346a9a472eeb (diff) | |
download | testng-f325d9aa7a9505526a2ec933349aaf227ac23b43.tar.gz |
Fix #776 Add IClassListener, a @BeforeClass/@AfterClass alternative
Diffstat (limited to 'src/main/java/org/testng/internal')
-rw-r--r-- | src/main/java/org/testng/internal/Invoker.java | 9 | ||||
-rw-r--r-- | src/main/java/org/testng/internal/TestMethodWorker.java | 20 |
2 files changed, 24 insertions, 5 deletions
diff --git a/src/main/java/org/testng/internal/Invoker.java b/src/main/java/org/testng/internal/Invoker.java index 86c892c2..94073b79 100644 --- a/src/main/java/org/testng/internal/Invoker.java +++ b/src/main/java/org/testng/internal/Invoker.java @@ -11,6 +11,7 @@ import java.util.Map; import java.util.Set; import org.testng.IClass; +import org.testng.IClassListener; import org.testng.IConfigurable; import org.testng.IConfigurationListener; import org.testng.IConfigurationListener2; @@ -67,6 +68,7 @@ public class Invoker implements IInvoker { private final boolean m_skipFailedInvocationCounts; private final Collection<IInvokedMethodListener> m_invokedMethodListeners; private final boolean m_continueOnFailedConfiguration; + private final List<IClassListener> m_classListeners; /** Group failures must be synced as the Invoker is accessed concurrently */ private Map<String, Boolean> m_beforegroupsFailures = Maps.newHashtable(); @@ -106,7 +108,8 @@ public class Invoker implements IInvoker { ITestResultNotifier notifier, SuiteRunState state, boolean skipFailedInvocationCounts, - Collection<IInvokedMethodListener> invokedMethodListeners) { + Collection<IInvokedMethodListener> invokedMethodListeners, + List<IClassListener> classListeners) { m_configuration = configuration; m_testContext= testContext; m_suiteState= state; @@ -115,6 +118,7 @@ public class Invoker implements IInvoker { m_skipFailedInvocationCounts = skipFailedInvocationCounts; m_invokedMethodListeners = invokedMethodListeners; m_continueOnFailedConfiguration = XmlSuite.CONTINUE.equals(testContext.getSuite().getXmlSuite().getConfigFailurePolicy()); + m_classListeners = classListeners; } /** @@ -1320,7 +1324,8 @@ public class Invoker implements IInvoker { mi, suite, parameters, - testContext)); + testContext, + m_classListeners)); } return runWorkers(testMethod, workers, testMethod.getThreadPoolSize(), groupMethods, suite, diff --git a/src/main/java/org/testng/internal/TestMethodWorker.java b/src/main/java/org/testng/internal/TestMethodWorker.java index ef72ff11..a2634197 100644 --- a/src/main/java/org/testng/internal/TestMethodWorker.java +++ b/src/main/java/org/testng/internal/TestMethodWorker.java @@ -1,6 +1,7 @@ package org.testng.internal; import org.testng.ClassMethodMap; +import org.testng.IClassListener; import org.testng.IMethodInstance; import org.testng.ITestClass; import org.testng.ITestContext; @@ -40,6 +41,7 @@ public class TestMethodWorker implements IWorker<ITestNGMethod> { private final ConfigurationGroupMethods m_groupMethods; private final ClassMethodMap m_classMethodMap; private final ITestContext m_testContext; + private final List<IClassListener> m_listeners; public TestMethodWorker(IInvoker invoker, IMethodInstance[] testMethods, @@ -47,7 +49,8 @@ public class TestMethodWorker implements IWorker<ITestNGMethod> { Map<String, String> parameters, ConfigurationGroupMethods groupMethods, ClassMethodMap classMethodMap, - ITestContext testContext) + ITestContext testContext, + List<IClassListener> listeners) { m_invoker = invoker; m_methodInstances = testMethods; @@ -56,6 +59,7 @@ public class TestMethodWorker implements IWorker<ITestNGMethod> { m_groupMethods = groupMethods; m_classMethodMap = classMethodMap; m_testContext = testContext; + m_listeners = listeners; } /** @@ -140,6 +144,10 @@ public class TestMethodWorker implements IWorker<ITestNGMethod> { * @param mi */ protected void invokeBeforeClassMethods(ITestClass testClass, IMethodInstance mi) { + for (IClassListener listener : m_listeners) { + listener.onBeforeClass(testClass, mi); + } + // if no BeforeClass than return immediately // used for parallel case when BeforeClass were already invoked if( (null == m_classMethodMap) || (null == m_classMethodMap.getInvokedBeforeClassMethods())) { @@ -184,6 +192,10 @@ public class TestMethodWorker implements IWorker<ITestNGMethod> { * @param mi */ protected void invokeAfterClassMethods(ITestClass testClass, IMethodInstance mi) { + for (IClassListener listener : m_listeners) { + listener.onAfterClass(testClass, mi); + } + // if no BeforeClass than return immediately // used for parallel case when BeforeClass were already invoked if( (null == m_classMethodMap) || (null == m_classMethodMap.getInvokedAfterClassMethods()) ) { @@ -283,7 +295,8 @@ class SingleTestMethodWorker extends TestMethodWorker { MethodInstance testMethod, XmlSuite suite, Map<String, String> parameters, - ITestContext testContext) + ITestContext testContext, + List<IClassListener> listeners) { super(invoker, new MethodInstance[] {testMethod}, @@ -291,6 +304,7 @@ class SingleTestMethodWorker extends TestMethodWorker { parameters, EMPTY_GROUP_METHODS, null, - testContext); + testContext, + listeners); } } |