aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/testng/internal
diff options
context:
space:
mode:
authorJulien Herr <julien.herr@alcatel-lucent.com>2015-11-05 15:53:08 +0100
committerJulien Herr <julien.herr@alcatel-lucent.com>2015-11-05 15:57:32 +0100
commitf325d9aa7a9505526a2ec933349aaf227ac23b43 (patch)
tree25a22cd1697cb3bbf711836fd6ad839a074329b0 /src/main/java/org/testng/internal
parent2c12573be25c3019f5060fb4c905346a9a472eeb (diff)
downloadtestng-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.java9
-rw-r--r--src/main/java/org/testng/internal/TestMethodWorker.java20
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);
}
}