Skip to content

Commit 7dc15af

Browse files
committed
Decouple SuiteRunner and TestRunner
Closes #2928
1 parent 1288058 commit 7dc15af

File tree

8 files changed

+28
-17
lines changed

8 files changed

+28
-17
lines changed

CHANGES.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Current
2-
2+
Fixed: GITHUB-2928: The constructor of TestRunner encountered NBC changes in 7.8.0 (Krishnan Mahadevan)
33
Fixed: GITHUB-581: Parameters of nested test suites are overridden(Krishnan Mahadevan)
44
Fixed: GITHUB-727 : Fixing data races (Krishnan Mahadevan)
55
Fixed: GITHUB-2913: Maps containing nulls can be incorrectly considered equal (Alex Heneveld)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.testng;
2+
3+
public interface ISuiteRunnerListener {
4+
5+
ITestListener getExitCodeListener();
6+
7+
void beforeInvocation(IInvokedMethod method, ITestResult testResult);
8+
9+
void afterInvocation(IInvokedMethod method, ITestResult testResult);
10+
}

testng-core/src/main/java/org/testng/SuiteRunner.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
* <CODE>SuiteRunner</CODE> is responsible for running all the tests included in one suite. The test
3131
* start is triggered by {@link #run()} method.
3232
*/
33-
public class SuiteRunner implements ISuite, IInvokedMethodListener {
33+
public class SuiteRunner implements ISuite, ISuiteRunnerListener {
3434

3535
private static final String DEFAULT_OUTPUT_DIR = "test-output";
3636

@@ -257,7 +257,7 @@ public void setReportResults(boolean reportResults) {
257257
useDefaultListeners = reportResults;
258258
}
259259

260-
ITestListener getExitCodeListener() {
260+
public ITestListener getExitCodeListener() {
261261
return exitCodeListener;
262262
}
263263

testng-core/src/main/java/org/testng/TestRunner.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ protected TestRunner(
178178
List<IClassListener> classListeners,
179179
Comparator<ITestNGMethod> comparator,
180180
DataProviderHolder otherHolder,
181-
SuiteRunner suiteRunner) {
181+
ISuiteRunnerListener suiteRunner) {
182182
this.comparator = comparator;
183183
this.holder.merge(otherHolder);
184184
init(
@@ -201,7 +201,7 @@ public TestRunner(
201201
Collection<IInvokedMethodListener> invokedMethodListeners,
202202
List<IClassListener> classListeners,
203203
Comparator<ITestNGMethod> comparator,
204-
SuiteRunner suiteRunner) {
204+
ISuiteRunnerListener suiteRunner) {
205205
this.comparator = comparator;
206206
init(
207207
configuration,
@@ -223,7 +223,7 @@ public TestRunner(
223223
boolean skipFailedInvocationCounts,
224224
Collection<IInvokedMethodListener> invokedMethodListeners,
225225
List<IClassListener> classListeners,
226-
SuiteRunner suiteRunner) {
226+
ISuiteRunnerListener suiteRunner) {
227227
this.comparator = Systematiser.getComparator();
228228
init(
229229
configuration,
@@ -246,7 +246,7 @@ private void init(
246246
boolean skipFailedInvocationCounts,
247247
Collection<IInvokedMethodListener> invokedMethodListeners,
248248
List<IClassListener> classListeners,
249-
SuiteRunner suiteRunner) {
249+
ISuiteRunnerListener suiteRunner) {
250250
m_configuration = configuration;
251251
m_xmlTest = test;
252252
m_suite = suite;
@@ -257,8 +257,8 @@ private void init(
257257
m_objectFactory = suite.getObjectFactory();
258258
setVerbose(test.getVerbose());
259259
if (suiteRunner == null) {
260-
if (suite instanceof SuiteRunner) {
261-
setExitCodeListener(((SuiteRunner) suite).getExitCodeListener());
260+
if (suite instanceof ISuiteRunnerListener) {
261+
setExitCodeListener(((ISuiteRunnerListener) suite).getExitCodeListener());
262262
}
263263
} else {
264264
setExitCodeListener(suiteRunner.getExitCodeListener());

testng-core/src/main/java/org/testng/internal/invokers/BaseInvoker.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
import java.util.Set;
66
import org.testng.IInvokedMethod;
77
import org.testng.IInvokedMethodListener;
8+
import org.testng.ISuiteRunnerListener;
89
import org.testng.ITestContext;
910
import org.testng.ITestNGMethod;
1011
import org.testng.ITestResult;
1112
import org.testng.SkipException;
1213
import org.testng.SuiteRunState;
13-
import org.testng.SuiteRunner;
1414
import org.testng.collections.Maps;
1515
import org.testng.internal.IConfiguration;
1616
import org.testng.internal.ITestResultNotifier;
@@ -34,15 +34,15 @@ class BaseInvoker {
3434
// Instead we now would be using this special object.
3535
protected final Object NULL_OBJECT = new Object();
3636

37-
private final SuiteRunner suiteRunner;
37+
private final ISuiteRunnerListener suiteRunner;
3838

3939
public BaseInvoker(
4040
ITestResultNotifier notifier,
4141
Collection<IInvokedMethodListener> invokedMethodListeners,
4242
ITestContext testContext,
4343
SuiteRunState suiteState,
4444
IConfiguration configuration,
45-
SuiteRunner suiteRunner) {
45+
ISuiteRunnerListener suiteRunner) {
4646
this.m_notifier = notifier;
4747
this.m_invokedMethodListeners = invokedMethodListeners;
4848
this.m_testContext = testContext;

testng-core/src/main/java/org/testng/internal/invokers/ConfigInvoker.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
import org.testng.IConfigurable;
1717
import org.testng.IConfigurationListener;
1818
import org.testng.IInvokedMethodListener;
19+
import org.testng.ISuiteRunnerListener;
1920
import org.testng.ITestClass;
2021
import org.testng.ITestContext;
2122
import org.testng.ITestNGMethod;
2223
import org.testng.ITestResult;
2324
import org.testng.Reporter;
2425
import org.testng.SuiteRunState;
25-
import org.testng.SuiteRunner;
2626
import org.testng.TestNGException;
2727
import org.testng.annotations.IConfigurationAnnotation;
2828
import org.testng.collections.Maps;
@@ -69,7 +69,7 @@ public ConfigInvoker(
6969
SuiteRunState suiteState,
7070
IConfiguration configuration,
7171
IConfigurationListener internalConfigurationListener,
72-
SuiteRunner suiteRunner) {
72+
ISuiteRunnerListener suiteRunner) {
7373
super(notifier, invokedMethodListeners, testContext, suiteState, configuration, suiteRunner);
7474
this.m_continueOnFailedConfiguration =
7575
testContext.getSuite().getXmlSuite().getConfigFailurePolicy()

testng-core/src/main/java/org/testng/internal/invokers/Invoker.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
import org.testng.IClassListener;
99
import org.testng.IConfigurationListener;
1010
import org.testng.IInvokedMethodListener;
11+
import org.testng.ISuiteRunnerListener;
1112
import org.testng.ITestContext;
1213
import org.testng.ITestNGMethod;
1314
import org.testng.SuiteRunState;
14-
import org.testng.SuiteRunner;
1515
import org.testng.internal.IConfiguration;
1616
import org.testng.internal.ITestResultNotifier;
1717

@@ -41,7 +41,7 @@ public Invoker(
4141
List<IClassListener> classListeners,
4242
DataProviderHolder holder,
4343
IConfigurationListener internalConfigurationListener,
44-
SuiteRunner suiteRunner) {
44+
ISuiteRunnerListener suiteRunner) {
4545
m_configInvoker =
4646
new ConfigInvoker(
4747
notifier,

testng-core/src/main/java/org/testng/internal/invokers/TestInvoker.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.testng.IInvokedMethodListener;
2929
import org.testng.IRetryAnalyzer;
3030
import org.testng.ISuite;
31+
import org.testng.ISuiteRunnerListener;
3132
import org.testng.ITestClass;
3233
import org.testng.ITestContext;
3334
import org.testng.ITestListener;
@@ -69,7 +70,7 @@ public TestInvoker(
6970
List<IClassListener> m_classListeners,
7071
boolean m_skipFailedInvocationCounts,
7172
ConfigInvoker invoker,
72-
SuiteRunner suiteRunner) {
73+
ISuiteRunnerListener suiteRunner) {
7374
super(
7475
m_notifier,
7576
m_invokedMethodListeners,

0 commit comments

Comments
 (0)