You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2022/02/12 20:30:48 UTC

[maven-surefire] branch test-run-id2 created (now 7f92897)

This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a change to branch test-run-id2
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git.


      at 7f92897  [SUREFIRE-2011] Updated abstractions which helps associating standard out/err with a test

This branch includes the following new commits:

     new 7f92897  [SUREFIRE-2011] Updated abstractions which helps associating standard out/err with a test

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[maven-surefire] 01/01: [SUREFIRE-2011] Updated abstractions which helps associating standard out/err with a test

Posted by ti...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch test-run-id2
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit 7f92897c458251fc730d3c66bfddd01340e7f3b9
Author: tibor.digana <ti...@apache.org>
AuthorDate: Sat Feb 12 21:30:30 2022 +0100

    [SUREFIRE-2011] Updated abstractions which helps associating standard out/err with a test
---
 .../surefire/booterclient/output/ForkClient.java   | 11 ++++----
 .../surefire/report/DefaultReporterFactory.java    |  4 +--
 .../plugin/surefire/report/TestSetRunListener.java | 19 +++++++------
 .../report/TestcycleConsoleOutputReceiver.java     |  4 +--
 .../booterclient/ForkingRunListenerTest.java       |  9 ++++---
 .../plugin/surefire/booterclient/MockReporter.java |  5 ++--
 .../booterclient/TestSetMockReporterFactory.java   |  4 +--
 .../maven/plugin/surefire/extensions/E2ETest.java  |  4 +--
 .../api/booter/ForkingReporterFactory.java         |  4 +--
 .../surefire/api/booter/ForkingRunListener.java    |  5 ++--
 .../surefire/api/report/ConsoleOutputCapture.java  |  6 ++---
 .../ConsoleOutputReceiverForCurrentThread.java     |  8 +++---
 .../maven/surefire/api/report/ReporterFactory.java |  2 +-
 ...OutputReceiver.java => TestOutputReceiver.java} |  2 +-
 .../{ReporterFactory.java => TestRunListener.java} | 21 ++-------------
 .../surefire/booter/SurefireReflectorTest.java     |  8 +++---
 .../surefire/common/junit4/JUnit4RunListener.java  | 22 ++++++++++-----
 .../maven/surefire/common/junit4/MockReporter.java |  9 +++++--
 .../junitplatform/JUnitPlatformProvider.java       | 15 +++++------
 .../surefire/junitplatform/RunListenerAdapter.java | 15 ++++++++---
 .../junitplatform/JUnitPlatformProviderTest.java   | 31 +++++++++++-----------
 .../junitplatform/RunListenerAdapterTest.java      |  6 ++---
 .../maven/surefire/junit/JUnit3Provider.java       |  6 ++---
 .../maven/surefire/junit4/JUnit4Provider.java      |  9 ++++---
 .../surefire/junitcore/ConcurrentRunListener.java  | 17 ++++++------
 .../surefire/junitcore/JUnitCoreProvider.java      |  3 ++-
 .../surefire/junitcore/JUnitCoreRunListener.java   |  4 +--
 .../maven/surefire/junitcore/LogicalStream.java    |  4 +--
 .../junitcore/NonConcurrentRunListener.java        | 10 +++----
 .../maven/surefire/junitcore/TestMethod.java       | 10 +++----
 .../apache/maven/surefire/junitcore/TestSet.java   |  8 +++---
 .../junitcore/ConcurrentRunListenerTest.java       |  4 +--
 .../maven/surefire/junitcore/JUnitCoreTester.java  |  9 +++----
 .../maven/surefire/junitcore/MockReporter.java     | 10 +++++--
 .../maven/surefire/junitcore/Surefire746Test.java  |  8 +++---
 .../maven/surefire/testng/TestNGProvider.java      |  7 +++--
 36 files changed, 165 insertions(+), 158 deletions(-)

diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
index 9a2065b..7963980 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/output/ForkClient.java
@@ -23,9 +23,10 @@ import org.apache.maven.plugin.surefire.booterclient.lazytestprovider.Notifiable
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
 import org.apache.maven.surefire.api.event.Event;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.api.report.ReportEntry;
 import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.RunMode;
@@ -78,7 +79,7 @@ public class ForkClient
 
     private final int forkNumber;
 
-    private volatile RunListener testSetReporter;
+    private volatile TestRunListener testSetReporter;
 
     /**
      * Written by one Thread and read by another: Main Thread and ForkStarter's Thread.
@@ -379,7 +380,7 @@ public class ForkClient
     /**
      * Only {@link #getConsoleOutputReceiver()} may call this method in another Thread.
      */
-    private RunListener getTestSetReporter()
+    private TestRunListener getTestSetReporter()
     {
         if ( testSetReporter == null )
         {
@@ -423,9 +424,9 @@ public class ForkClient
         return getTestSetReporter();
     }
 
-    public ConsoleOutputReceiver getConsoleOutputReceiver()
+    public TestOutputReceiver getConsoleOutputReceiver()
     {
-        return (ConsoleOutputReceiver) getTestSetReporter();
+        return getTestSetReporter();
     }
 
     private ConsoleLogger getOrCreateConsoleLogger()
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
index 693e63d..39dd86c 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/DefaultReporterFactory.java
@@ -29,7 +29,7 @@ import org.apache.maven.surefire.extensions.StatelessReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.report.RunStatistics;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.apache.maven.surefire.api.suite.RunResult;
@@ -97,7 +97,7 @@ public class DefaultReporterFactory
     }
 
     @Override
-    public RunListener createReporter()
+    public TestRunListener createReporter()
     {
         TestSetRunListener testSetRunListener =
             new TestSetRunListener( createConsoleReporter(),
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java
index 9ab198c..4e6e461 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java
@@ -31,10 +31,9 @@ import org.apache.maven.surefire.extensions.ConsoleOutputReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoConsoleReportEventListener;
 import org.apache.maven.surefire.extensions.StatelessTestsetInfoFileReportEventListener;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import static org.apache.maven.plugin.surefire.report.ReportEntryType.ERROR;
@@ -51,13 +50,13 @@ import static java.util.Objects.requireNonNull;
  * @author Kristian Rosenvold
  */
 public class TestSetRunListener
-    implements RunListener, ConsoleOutputReceiver, ConsoleLogger
+    implements TestRunListener, ConsoleLogger
 {
     private final Queue<TestMethodStats> testMethodStats = new ConcurrentLinkedQueue<>();
 
     private final TestSetStats detailsForThis;
 
-    private final ConsoleOutputReportEventListener consoleOutputReceiver;
+    private final ConsoleOutputReportEventListener testOutputReceiver;
 
     private final boolean briefOrPlainFormat;
 
@@ -83,7 +82,7 @@ public class TestSetRunListener
                                StatelessTestsetInfoFileReportEventListener<WrappedReportEntry, TestSetStats>
                                        fileReporter,
                                StatelessReportEventListener<WrappedReportEntry, TestSetStats> simpleXMLReporter,
-                               ConsoleOutputReportEventListener consoleOutputReceiver,
+                               ConsoleOutputReportEventListener testOutputReceiver,
                                StatisticsReporter statisticsReporter, boolean trimStackTrace,
                                boolean isPlainFormat, boolean briefOrPlainFormat, Object lock )
     {
@@ -91,7 +90,7 @@ public class TestSetRunListener
         this.fileReporter = fileReporter;
         this.statisticsReporter = statisticsReporter;
         this.simpleXMLReporter = simpleXMLReporter;
-        this.consoleOutputReceiver = consoleOutputReceiver;
+        this.testOutputReceiver = testOutputReceiver;
         this.briefOrPlainFormat = briefOrPlainFormat;
         detailsForThis = new TestSetStats( trimStackTrace, isPlainFormat );
         this.lock = lock;
@@ -184,7 +183,7 @@ public class TestSetRunListener
             {
                 Utf8RecodingDeferredFileOutputStream stream = stdout ? testStdOut : testStdErr;
                 stream.write( output, newLine );
-                consoleOutputReceiver.writeTestOutput( output, newLine, stdout );
+                testOutputReceiver.writeTestOutput( output, newLine, stdout );
             }
         }
         catch ( IOException e )
@@ -198,7 +197,7 @@ public class TestSetRunListener
     {
         detailsForThis.testSetStart();
         consoleReporter.testSetStarting( report );
-        consoleOutputReceiver.testSetStarting( report );
+        testOutputReceiver.testSetStarting( report );
     }
 
     private void clearCapture()
@@ -217,7 +216,7 @@ public class TestSetRunListener
         simpleXMLReporter.testSetCompleted( wrap, detailsForThis );
         statisticsReporter.testSetCompleted();
         consoleReporter.testSetCompleted( wrap, detailsForThis, testResults );
-        consoleOutputReceiver.testSetCompleted( wrap );
+        testOutputReceiver.testSetCompleted( wrap );
         consoleReporter.reset();
 
         wrap.getStdout().free();
@@ -317,7 +316,7 @@ public class TestSetRunListener
 
     public void close()
     {
-        consoleOutputReceiver.close();
+        testOutputReceiver.close();
     }
 
     private void addTestMethodStats()
diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java
index 3d32073..90cef51 100644
--- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java
+++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestcycleConsoleOutputReceiver.java
@@ -19,15 +19,15 @@ package org.apache.maven.plugin.surefire.report;
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.extensions.ConsoleOutputReportEventListener;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 /**
  * @author Kristian Rosenvold
  */
 public interface TestcycleConsoleOutputReceiver
-    extends ConsoleOutputReceiver, ConsoleOutputReportEventListener
+    extends TestOutputReceiver, ConsoleOutputReportEventListener
 {
     void testSetStarting( TestSetReportEntry reportEntry );
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java
index 9853825..1e7a067 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/ForkingRunListenerTest.java
@@ -31,14 +31,15 @@ import org.apache.maven.surefire.extensions.EventHandler;
 import org.apache.maven.surefire.api.fork.ForkNodeArguments;
 import org.apache.maven.surefire.extensions.util.CountdownCloseable;
 import org.apache.maven.surefire.api.report.CategorizedReportEntry;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.LegacyPojoStackTraceWriter;
 import org.apache.maven.surefire.api.report.ReportEntry;
 import org.apache.maven.surefire.api.report.ReporterException;
 import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel;
 
 import javax.annotation.Nonnull;
@@ -180,7 +181,7 @@ public class ForkingRunListenerTest
     public void testConsoleOutput() throws Exception
     {
         final StandardTestRun standardTestRun = new StandardTestRun();
-        ConsoleOutputReceiver directConsoleReporter = (ConsoleOutputReceiver) standardTestRun.run();
+        TestOutputReceiver directConsoleReporter = standardTestRun.run();
         directConsoleReporter.writeTestOutput( "HeyYou", false, true );
         standardTestRun.assertExpected( MockReporter.STDOUT, "HeyYou" );
     }
@@ -461,7 +462,7 @@ public class ForkingRunListenerTest
         }
     }
 
-    private RunListener createForkingRunListener()
+    private TestRunListener createForkingRunListener()
     {
         WritableBufferedByteChannel channel = (WritableBufferedByteChannel) newChannel( printStream );
         return new ForkingRunListener( new EventChannelEncoder( channel ), false );
@@ -471,7 +472,7 @@ public class ForkingRunListenerTest
     {
         private MockReporter reporter;
 
-        public RunListener run()
+        public TestRunListener run()
             throws ReporterException
         {
             reset();
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java
index aab5731..337131d 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/MockReporter.java
@@ -20,9 +20,8 @@ package org.apache.maven.plugin.surefire.booterclient;
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.api.report.RunMode;
 
@@ -34,7 +33,7 @@ import java.util.concurrent.atomic.AtomicInteger;
  * Internal tests use only.
  */
 public class MockReporter
-    implements RunListener, ConsoleLogger, ConsoleOutputReceiver
+    implements TestRunListener, ConsoleLogger
 {
     private final List<String> events = new ArrayList<>();
 
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
index ace0e5d..7b05fb0 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/booterclient/TestSetMockReporterFactory.java
@@ -25,7 +25,7 @@ import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter;
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 
 import java.io.File;
 
@@ -43,7 +43,7 @@ public class TestSetMockReporterFactory
     }
 
     @Override
-    public RunListener createReporter()
+    public TestRunListener createReporter()
     {
         return new MockReporter();
     }
diff --git a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java
index d2a9c20..d059dd2 100644
--- a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java
+++ b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/extensions/E2ETest.java
@@ -25,7 +25,7 @@ import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
 import org.apache.maven.surefire.api.booter.Command;
 import org.apache.maven.surefire.api.event.Event;
 import org.apache.maven.surefire.api.fork.ForkNodeArguments;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.booter.spi.EventChannelEncoder;
 import org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory;
 import org.apache.maven.surefire.extensions.CommandReader;
@@ -133,7 +133,7 @@ public class E2ETest
             @Override
             public void run()
             {
-                ConsoleOutputReceiver target = new ConsoleOutputReceiver()
+                TestOutputReceiver target = new TestOutputReceiver()
                 {
                     @Override
                     public void writeTestOutput( String output, boolean newLine, boolean stdout )
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java
index 31bbfa5..e53eeb4 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingReporterFactory.java
@@ -20,7 +20,7 @@ package org.apache.maven.surefire.api.booter;
  */
 
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.suite.RunResult;
 
 /**
@@ -43,7 +43,7 @@ public class ForkingReporterFactory
     }
 
     @Override
-    public RunListener createReporter()
+    public TestRunListener createReporter()
     {
         return new ForkingRunListener( eventChannel, trimstackTrace );
     }
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java
index 169f358..0a44cfc 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/booter/ForkingRunListener.java
@@ -20,10 +20,9 @@ package org.apache.maven.surefire.api.booter;
  */
 
 import org.apache.maven.plugin.surefire.log.api.ConsoleLogger;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.ConsoleStream;
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.RunMode;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
@@ -48,7 +47,7 @@ import static java.util.Objects.requireNonNull;
  * @author Kristian Rosenvold
  */
 public class ForkingRunListener
-    implements RunListener, ConsoleLogger, ConsoleOutputReceiver, ConsoleStream
+    implements TestRunListener, ConsoleLogger, ConsoleStream
 {
     private final MasterProcessChannelEncoder target;
 
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java
index 2298e7f..96a8eff 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputCapture.java
@@ -32,7 +32,7 @@ import static java.lang.System.setOut;
  */
 public final class ConsoleOutputCapture
 {
-    public static void startCapture( ConsoleOutputReceiver target )
+    public static void startCapture( TestOutputReceiver target )
     {
         setOut( new ForwardingPrintStream( true, target ) );
         setErr( new ForwardingPrintStream( false, target ) );
@@ -42,9 +42,9 @@ public final class ConsoleOutputCapture
         extends PrintStream
     {
         private final boolean isStdout;
-        private final ConsoleOutputReceiver target;
+        private final TestOutputReceiver target;
 
-        ForwardingPrintStream( boolean stdout, ConsoleOutputReceiver target )
+        ForwardingPrintStream( boolean stdout, TestOutputReceiver target )
         {
             super( new NullOutputStream() );
             isStdout = stdout;
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java
index 4843630..0874b2b 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiverForCurrentThread.java
@@ -24,21 +24,21 @@ package org.apache.maven.surefire.api.report;
  */
 public final class ConsoleOutputReceiverForCurrentThread
 {
-    private static final ThreadLocal<ConsoleOutputReceiver> CURRENT
+    private static final ThreadLocal<TestOutputReceiver> CURRENT
         = new InheritableThreadLocal<>();
 
     private ConsoleOutputReceiverForCurrentThread()
     {
     }
 
-    public static ConsoleOutputReceiver get()
+    public static TestOutputReceiver get()
     {
         return CURRENT.get();
     }
 
-    public static void set( ConsoleOutputReceiver consoleOutputReceiver )
+    public static void set( TestOutputReceiver testOutputReceiver )
     {
-        CURRENT.set( consoleOutputReceiver );
+        CURRENT.set( testOutputReceiver );
     }
 
     public static void remove()
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
index af9057e..1e21236 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
@@ -33,7 +33,7 @@ public interface ReporterFactory
      *
      * @return A reporter instance
      */
-    RunListener createReporter();
+    TestRunListener createReporter();
 
     /**
      * Closes the factory, freeing resources allocated in the factory.
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiver.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestOutputReceiver.java
similarity index 97%
rename from surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiver.java
rename to surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestOutputReceiver.java
index 99e47f4..1bd7279 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ConsoleOutputReceiver.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestOutputReceiver.java
@@ -23,7 +23,7 @@ package org.apache.maven.surefire.api.report;
  * A receiver of stdout/sterr output from running tests. This receiver knows how to associate
  * the output with a given testset.
  */
-public interface ConsoleOutputReceiver
+public interface TestOutputReceiver
 {
 
     /**
diff --git a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java
similarity index 65%
copy from surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
copy to surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java
index af9057e..29eaf35 100644
--- a/surefire-api/src/main/java/org/apache/maven/surefire/api/report/ReporterFactory.java
+++ b/surefire-api/src/main/java/org/apache/maven/surefire/api/report/TestRunListener.java
@@ -19,27 +19,10 @@ package org.apache.maven.surefire.api.report;
  * under the License.
  */
 
-import org.apache.maven.surefire.api.suite.RunResult;
-
 /**
- * Used by the providers to request (per-thread) run listeners.
  *
- * @author Kristian Rosenvold
  */
-public interface ReporterFactory
+public interface TestRunListener
+    extends RunListener, TestOutputReceiver
 {
-    /**
-     * Creates a reporter.
-     *
-     * @return A reporter instance
-     */
-    RunListener createReporter();
-
-    /**
-     * Closes the factory, freeing resources allocated in the factory.
-     *
-     * @return The run result
-     */
-    RunResult close();
-
 }
diff --git a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
index b4290a7..1f275b5 100644
--- a/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
+++ b/surefire-booter/src/test/java/org/apache/maven/surefire/booter/SurefireReflectorTest.java
@@ -25,7 +25,7 @@ import org.apache.maven.surefire.api.provider.ProviderParameters;
 import org.apache.maven.surefire.api.provider.SurefireProvider;
 import org.apache.maven.surefire.api.report.ReporterConfiguration;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.suite.RunResult;
 import org.apache.maven.surefire.api.testset.DirectoryScannerParameters;
 import org.apache.maven.surefire.api.testset.RunOrderParameters;
@@ -55,7 +55,7 @@ public class SurefireReflectorTest
         ReporterFactory factory = new ReporterFactory()
         {
             @Override
-            public RunListener createReporter()
+            public TestRunListener createReporter()
             {
                 return null;
             }
@@ -255,7 +255,7 @@ public class SurefireReflectorTest
         ReporterFactory reporterFactory = new ReporterFactory()
         {
             @Override
-            public RunListener createReporter()
+            public TestRunListener createReporter()
             {
                 return null;
             }
@@ -279,7 +279,7 @@ public class SurefireReflectorTest
         ReporterFactory reporterFactory = new ReporterFactory()
         {
             @Override
-            public RunListener createReporter()
+            public TestRunListener createReporter()
             {
                 return null;
             }
diff --git a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
index 7f4e97e..d316395 100644
--- a/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
+++ b/surefire-providers/common-junit4/src/main/java/org/apache/maven/surefire/common/junit4/JUnit4RunListener.java
@@ -20,14 +20,16 @@ package org.apache.maven.surefire.common.junit4;
  */
 
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.junit.runner.Description;
 import org.junit.runner.Result;
 import org.junit.runner.notification.Failure;
+import org.junit.runner.notification.RunListener;
 
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.isFailureInsideJUnitItself;
 import static org.apache.maven.surefire.common.junit4.JUnit4ProviderUtil.toClassMethod;
@@ -41,12 +43,14 @@ import static org.apache.maven.surefire.api.report.SimpleReportEntry.withExcepti
  *
  */
 public class JUnit4RunListener
-    extends org.junit.runner.notification.RunListener
+    extends RunListener
+    implements TestOutputReceiver
 {
-    protected final RunListener reporter;
+    protected final TestRunListener reporter;
 
     /**
-     * This flag is set after a failure has occurred so that a {@link RunListener#testSucceeded} event is not fired.
+     * This flag is set after a failure has occurred so that a
+     * {@link org.apache.maven.surefire.api.report.RunListener#testSucceeded} event is not fired.
      * This is necessary because JUnit4 always fires a
      * {@link org.junit.runner.notification.RunListener#testRunFinished(Result)}
      * event-- even if there was a failure.
@@ -58,7 +62,7 @@ public class JUnit4RunListener
      *
      * @param reporter the reporter to log testing events to
      */
-    public JUnit4RunListener( RunListener reporter )
+    public JUnit4RunListener( TestRunListener reporter )
     {
         this.reporter = reporter;
     }
@@ -163,7 +167,7 @@ public class JUnit4RunListener
     }
 
     /**
-     * Delegates to {@link RunListener#testExecutionSkippedByUser()}.
+     * Delegates to {@link org.apache.maven.surefire.api.report.RunListener#testExecutionSkippedByUser()}.
      */
     public void testExecutionSkippedByUser()
     {
@@ -193,4 +197,10 @@ public class JUnit4RunListener
             }
         }
     }
+
+    @Override
+    public void writeTestOutput( String output, boolean newLine, boolean stdout )
+    {
+        reporter.writeTestOutput( output, newLine, stdout );
+    }
 }
diff --git a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java
index 39947fc..cf543b3 100644
--- a/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java
+++ b/surefire-providers/common-junit4/src/test/java/org/apache/maven/surefire/common/junit4/MockReporter.java
@@ -20,8 +20,8 @@ package org.apache.maven.surefire.common.junit4;
  */
 
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.RunMode;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.ArrayList;
@@ -32,7 +32,7 @@ import java.util.concurrent.atomic.AtomicInteger;
  * Internal tests use only.
  */
 final class MockReporter
-    implements RunListener
+    implements TestRunListener
 {
     private final List<String> events = new ArrayList<>();
 
@@ -127,4 +127,9 @@ final class MockReporter
     public void testAssumptionFailure( ReportEntry report )
     {
     }
+
+    @Override
+    public void writeTestOutput( String output, boolean newLine, boolean stdout )
+    {
+    }
 }
diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
index 8ff29c3..6c4e9ed 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProvider.java
@@ -50,10 +50,8 @@ import java.util.logging.Logger;
 
 import org.apache.maven.surefire.api.provider.AbstractProvider;
 import org.apache.maven.surefire.api.provider.ProviderParameters;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.ReporterException;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.suite.RunResult;
 import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
@@ -122,20 +120,20 @@ public class JUnitPlatformProvider
         final RunResult runResult;
         try
         {
-            RunListener runListener = reporterFactory.createReporter();
-            startCapture( ( ConsoleOutputReceiver ) runListener );
+            RunListenerAdapter adapter = new RunListenerAdapter( reporterFactory.createReporter() );
+            startCapture( adapter );
             setupJunitLogger();
             if ( forkTestSet instanceof TestsToRun )
             {
-                invokeAllTests( (TestsToRun) forkTestSet, runListener );
+                invokeAllTests( (TestsToRun) forkTestSet, adapter );
             }
             else if ( forkTestSet instanceof Class )
             {
-                invokeAllTests( fromClass( ( Class<?> ) forkTestSet ), runListener );
+                invokeAllTests( fromClass( ( Class<?> ) forkTestSet ), adapter );
             }
             else if ( forkTestSet == null )
             {
-                invokeAllTests( scanClasspath(), runListener );
+                invokeAllTests( scanClasspath(), adapter );
             }
             else
             {
@@ -167,9 +165,8 @@ public class JUnitPlatformProvider
         return parameters.getRunOrderCalculator().orderTestClasses( scannedClasses );
     }
 
-    private void invokeAllTests( TestsToRun testsToRun, RunListener runListener )
+    private void invokeAllTests( TestsToRun testsToRun, RunListenerAdapter adapter )
     {
-        RunListenerAdapter adapter = new RunListenerAdapter( runListener );
         try
         {
             execute( testsToRun, adapter );
diff --git a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java
index 101c6b8..59f6787 100644
--- a/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java
+++ b/surefire-providers/surefire-junit-platform/src/main/java/org/apache/maven/surefire/junitplatform/RunListenerAdapter.java
@@ -34,11 +34,12 @@ import java.util.concurrent.ConcurrentMap;
 import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SafeThrowable;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.junit.platform.engine.TestExecutionResult;
 import org.junit.platform.engine.TestSource;
 import org.junit.platform.engine.support.descriptor.ClassSource;
@@ -51,17 +52,17 @@ import org.junit.platform.launcher.TestPlan;
  * @since 2.22.0
  */
 final class RunListenerAdapter
-    implements TestExecutionListener
+    implements TestExecutionListener, TestOutputReceiver
 {
     private static final Pattern COMMA_PATTERN = Pattern.compile( "," );
 
     private final ConcurrentMap<TestIdentifier, Long> testStartTime = new ConcurrentHashMap<>();
     private final ConcurrentMap<TestIdentifier, TestExecutionResult> failures = new ConcurrentHashMap<>();
     private final ConcurrentMap<String, TestIdentifier> runningTestIdentifiersByUniqueId = new ConcurrentHashMap<>();
-    private final RunListener runListener;
+    private final TestRunListener runListener;
     private volatile TestPlan testPlan;
 
-    RunListenerAdapter( RunListener runListener )
+    RunListenerAdapter( TestRunListener runListener )
     {
         this.runListener = runListener;
     }
@@ -358,4 +359,10 @@ final class RunListenerAdapter
         getFailures().clear();
         testPlan = null;
     }
+
+    @Override
+    public void writeTestOutput( String output, boolean newLine, boolean stdout )
+    {
+        runListener.writeTestOutput( output, newLine, stdout );
+    }
 }
diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java
index f7a9a42..a6ad81b 100644
--- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java
+++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/JUnitPlatformProviderTest.java
@@ -55,11 +55,12 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.maven.surefire.api.provider.ProviderParameters;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.api.report.ReportEntry;
 import org.apache.maven.surefire.api.report.ReporterFactory;
 import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.api.testset.TestListResolver;
 import org.apache.maven.surefire.api.testset.TestRequest;
@@ -95,7 +96,7 @@ public class JUnitPlatformProviderTest
     {
         Launcher launcher = LauncherFactory.create();
         JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock(), launcher );
-        RunListener listener = mock( RunListener.class );
+        TestRunListener listener = mock( TestRunListener.class );
 
         ArgumentCaptor<ReportEntry> testCaptor = ArgumentCaptor.forClass( ReportEntry.class );
         ArgumentCaptor<TestSetReportEntry> testSetCaptor = ArgumentCaptor.forClass( TestSetReportEntry.class );
@@ -142,7 +143,7 @@ public class JUnitPlatformProviderTest
     {
         Launcher launcher = LauncherFactory.create();
         JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock(), launcher );
-        RunListener listener = mock( RunListener.class );
+        TestRunListener listener = mock( TestRunListener.class );
 
         ArgumentCaptor<ReportEntry> testCaptor = ArgumentCaptor.forClass( ReportEntry.class );
         ArgumentCaptor<TestSetReportEntry> testSetCaptor = ArgumentCaptor.forClass( TestSetReportEntry.class );
@@ -426,7 +427,7 @@ public class JUnitPlatformProviderTest
         ProviderParameters parameters = providerParametersMock();
         JUnitPlatformProvider provider = new JUnitPlatformProvider( parameters, launcher );
 
-        RunListener listener = mock( RunListener.class );
+        TestRunListener listener = mock( TestRunListener.class );
         ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class );
         RunListenerAdapter adapter = new RunListenerAdapter( listener );
 
@@ -456,7 +457,7 @@ public class JUnitPlatformProviderTest
 
         TestPlanSummaryListener executionListener = new TestPlanSummaryListener();
 
-        RunListener listener = mock( RunListener.class );
+        TestRunListener listener = mock( TestRunListener.class );
         ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class );
         RunListenerAdapter adapter = new RunListenerAdapter( listener );
 
@@ -494,7 +495,7 @@ public class JUnitPlatformProviderTest
 
         TestPlanSummaryListener executionListener = new TestPlanSummaryListener();
 
-        RunListener listener = mock( RunListener.class );
+        TestRunListener listener = mock( TestRunListener.class );
         ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class );
         RunListenerAdapter adapter = new RunListenerAdapter( listener );
 
@@ -537,7 +538,7 @@ public class JUnitPlatformProviderTest
 
         TestPlanSummaryListener executionListener = new TestPlanSummaryListener();
 
-        RunListener listener = mock( RunListener.class );
+        TestRunListener listener = mock( TestRunListener.class );
         ArgumentCaptor<ReportEntry> entryCaptor = ArgumentCaptor.forClass( ReportEntry.class );
         RunListenerAdapter adapter = new RunListenerAdapter( listener );
 
@@ -597,7 +598,7 @@ public class JUnitPlatformProviderTest
     public void allDiscoveredTestsAreInvokedForNullArgument()
                     throws Exception
     {
-        RunListener runListener = runListenerMock();
+        TestRunListener runListener = runListenerMock();
         ProviderParameters providerParameters =
                         providerParametersMock( runListener, TestClass1.class, TestClass2.class );
         Launcher launcher = LauncherFactory.create();
@@ -661,15 +662,15 @@ public class JUnitPlatformProviderTest
                     throws Exception
     {
         Launcher launcher = LauncherFactory.create();
-        RunListener runListener = runListenerMock();
+        TestRunListener runListener = runListenerMock();
         JUnitPlatformProvider provider = new JUnitPlatformProvider( providerParametersMock( runListener ), launcher );
 
         invokeProvider( provider, VerboseTestClass.class );
 
         ArgumentCaptor<String> captor = ArgumentCaptor.forClass( String.class );
-        verify( (ConsoleOutputReceiver) runListener )
+        verify( runListener )
                         .writeTestOutput( captor.capture(), eq( true ), eq( true ) );
-        verify( (ConsoleOutputReceiver) runListener )
+        verify( runListener )
                         .writeTestOutput( captor.capture(), eq( true ), eq( false ) );
         assertThat( captor.getAllValues() )
                 .hasSize( 2 )
@@ -985,7 +986,7 @@ public class JUnitPlatformProviderTest
     }
 
     private static ProviderParameters providerParametersMock(
-                    RunListener runListener, Class<?>... testClasses )
+        TestRunListener runListener, Class<?>... testClasses )
     {
         TestListResolver testListResolver = new TestListResolver( "" );
         return providerParametersMock( runListener, testListResolver, testClasses );
@@ -998,7 +999,7 @@ public class JUnitPlatformProviderTest
     }
 
     private static ProviderParameters providerParametersMock(
-                    RunListener runListener, TestListResolver testListResolver, Class<?>... testClasses )
+        TestRunListener runListener, TestListResolver testListResolver, Class<?>... testClasses )
     {
         TestsToRun testsToRun = newTestsToRun( testClasses );
 
@@ -1023,9 +1024,9 @@ public class JUnitPlatformProviderTest
         return providerParameters;
     }
 
-    private static RunListener runListenerMock()
+    private static TestRunListener runListenerMock()
     {
-        return mock( RunListener.class, withSettings().extraInterfaces( ConsoleOutputReceiver.class ) );
+        return mock( TestRunListener.class, withSettings().extraInterfaces( TestOutputReceiver.class ) );
     }
 
     private static Set<String> failedTestDisplayNames( TestExecutionSummary summary )
diff --git a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java
index d13176d..10c488d 100644
--- a/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java
+++ b/surefire-providers/surefire-junit-platform/src/test/java/org/apache/maven/surefire/junitplatform/RunListenerAdapterTest.java
@@ -45,9 +45,9 @@ import java.lang.reflect.Method;
 import java.util.Map;
 import java.util.Optional;
 
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.junit.Before;
@@ -79,14 +79,14 @@ public class RunListenerAdapterTest
 {
     private static final ConfigurationParameters CONFIG_PARAMS = mock( ConfigurationParameters.class );
 
-    private RunListener listener;
+    private TestRunListener listener;
 
     private RunListenerAdapter adapter;
 
     @Before
     public void setUp()
     {
-        listener = mock( RunListener.class );
+        listener = mock( TestRunListener.class );
         adapter = new RunListenerAdapter( listener );
         adapter.testPlanExecutionStarted( TestPlan.from( emptyList() ) );
     }
diff --git a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
index 3c9825d..1291e01 100644
--- a/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
+++ b/surefire-providers/surefire-junit3/src/main/java/org/apache/maven/surefire/junit/JUnit3Provider.java
@@ -19,11 +19,11 @@ package org.apache.maven.surefire.junit;
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.common.junit3.JUnit3Reflector;
 import org.apache.maven.surefire.common.junit3.JUnit3TestChecker;
 import org.apache.maven.surefire.api.provider.AbstractProvider;
 import org.apache.maven.surefire.api.provider.ProviderParameters;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.ReporterFactory;
 import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
@@ -95,8 +95,8 @@ public class JUnit3Provider
         RunResult runResult;
         try
         {
-            RunListener reporter = reporterFactory.createReporter();
-            startCapture( (ConsoleOutputReceiver) reporter );
+            TestRunListener reporter = reporterFactory.createReporter();
+            startCapture( reporter );
             Map<String, String> systemProperties = systemProps();
             setSystemManager( System.getProperty( "surefire.security.manager" ) );
 
diff --git a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
index 3f4b095..9db1cd8 100644
--- a/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
+++ b/surefire-providers/surefire-junit4/src/main/java/org/apache/maven/surefire/junit4/JUnit4Provider.java
@@ -22,13 +22,13 @@ package org.apache.maven.surefire.junit4;
 import org.apache.maven.surefire.api.booter.Command;
 import org.apache.maven.surefire.api.provider.CommandChainReader;
 import org.apache.maven.surefire.api.provider.CommandListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4TestChecker;
 import org.apache.maven.surefire.common.junit4.JUnitTestFailureListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
 import org.apache.maven.surefire.api.provider.AbstractProvider;
 import org.apache.maven.surefire.api.provider.ProviderParameters;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.report.PojoStackTraceWriter;
 import org.apache.maven.surefire.api.report.ReporterFactory;
 import org.apache.maven.surefire.api.report.RunListener;
@@ -121,9 +121,10 @@ public class JUnit4Provider
         RunResult runResult;
         try
         {
-            RunListener reporter = reporterFactory.createReporter();
+            TestRunListener reporter = reporterFactory.createReporter();
+            JUnit4RunListener listener = new JUnit4RunListener( reporter );
 
-            startCapture( (ConsoleOutputReceiver) reporter );
+            startCapture( listener );
             // startCapture() called in prior to setTestsToRun()
 
             if ( testsToRun == null )
@@ -131,7 +132,7 @@ public class JUnit4Provider
                 setTestsToRun( forkTestSet );
             }
 
-            Notifier notifier = new Notifier( new JUnit4RunListener( reporter ), getSkipAfterFailureCount() );
+            Notifier notifier = new Notifier( listener, getSkipAfterFailureCount() );
             Result result = new Result();
             notifier.addListeners( createCustomListeners( customRunListeners ) )
                 .addListener( result.createListener() );
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
index ce8ad88..550edf1 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/ConcurrentRunListener.java
@@ -20,13 +20,12 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import java.util.Map;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.ConsoleStream;
 import org.apache.maven.surefire.api.report.ReportEntry;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.RunMode;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
@@ -44,11 +43,11 @@ import static org.apache.maven.surefire.junitcore.TestMethod.getThreadTestMethod
  * @author Kristian Rosenvold
  */
 public abstract class ConcurrentRunListener
-    implements RunListener, ConsoleOutputReceiver
+    implements TestRunListener
 {
     private final Map<String, TestSet> classMethodCounts;
 
-    private final ThreadLocal<RunListener> reporterManagerThreadLocal;
+    private final ThreadLocal<TestRunListener> reporterManagerThreadLocal;
 
     private final boolean reportImmediately;
 
@@ -61,10 +60,10 @@ public abstract class ConcurrentRunListener
         this.reportImmediately = reportImmediately;
         this.classMethodCounts = classMethodCounts;
         this.consoleStream = consoleStream;
-        reporterManagerThreadLocal = new ThreadLocal<RunListener>()
+        reporterManagerThreadLocal = new ThreadLocal<TestRunListener>()
         {
             @Override
-            protected RunListener initialValue()
+            protected TestRunListener initialValue()
             {
                 return reporterFactory.createReporter();
             }
@@ -81,7 +80,7 @@ public abstract class ConcurrentRunListener
     {
         try
         {
-            final RunListener reporterManager = getRunListener();
+            final TestRunListener reporterManager = getRunListener();
             for ( TestSet testSet : classMethodCounts.values() )
             {
                 testSet.replay( reporterManager );
@@ -201,12 +200,12 @@ public abstract class ConcurrentRunListener
         return classMethodCounts.get( description.getSourceName() );
     }
 
-    RunListener getRunListener()
+    TestRunListener getRunListener()
     {
         return reporterManagerThreadLocal.get();
     }
 
-    public static ConcurrentRunListener createInstance( Map<String, TestSet> classMethodCounts,
+    public static TestRunListener createInstance( Map<String, TestSet> classMethodCounts,
                                                             ReporterFactory reporterFactory,
                                                             boolean parallelClasses, boolean parallelBoth,
                                                             ConsoleStream consoleStream )
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
index 6877b00..a575281 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreProvider.java
@@ -22,6 +22,7 @@ package org.apache.maven.surefire.junitcore;
 import org.apache.maven.surefire.api.booter.Command;
 import org.apache.maven.surefire.api.provider.CommandChainReader;
 import org.apache.maven.surefire.api.provider.CommandListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnitTestFailureListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
@@ -251,7 +252,7 @@ public class JUnitCoreProvider
         {
             final Map<String, TestSet> testSetMap = new ConcurrentHashMap<>();
 
-            ConcurrentRunListener listener = createInstance( testSetMap, reporterFactory, isParallelTypes(),
+            TestRunListener listener = createInstance( testSetMap, reporterFactory, isParallelTypes(),
                                                              isParallelMethodsAndTypes(), consoleStream );
             startCapture( listener );
 
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java
index 37f3759..f272c21 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/JUnitCoreRunListener.java
@@ -19,9 +19,9 @@ package org.apache.maven.surefire.junitcore;
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4StackTraceWriter;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.StackTraceWriter;
 import org.junit.runner.Description;
 import org.junit.runner.Result;
@@ -49,7 +49,7 @@ public class JUnitCoreRunListener
      * @param reporter          the report manager to log testing events to
      * @param classMethodCounts A map of methods
      */
-    public JUnitCoreRunListener( RunListener reporter, Map<String, TestSet> classMethodCounts )
+    public JUnitCoreRunListener( TestRunListener reporter, Map<String, TestSet> classMethodCounts )
     {
         super( reporter );
         this.classMethodCounts = classMethodCounts;
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
index cf70d17..db1840b 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/LogicalStream.java
@@ -19,7 +19,7 @@ package org.apache.maven.surefire.junitcore;
  * under the License.
  */
 
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 
 import java.util.Queue;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -50,7 +50,7 @@ final class LogicalStream
         output.add( new Entry( stdout, text, newLine ) );
     }
 
-    void writeDetails( ConsoleOutputReceiver outputReceiver )
+    void writeDetails( TestOutputReceiver outputReceiver )
     {
         for ( Entry entry = output.poll(); entry != null; entry = output.poll() )
         {
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java
index 262a4ee..c8f3d68 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/NonConcurrentRunListener.java
@@ -19,10 +19,10 @@ package org.apache.maven.surefire.junitcore;
  * under the License.
  */
 
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.util.internal.ClassMethod;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
@@ -43,13 +43,13 @@ import static org.apache.maven.surefire.api.util.internal.ObjectUtils.systemProp
  */
 public class NonConcurrentRunListener
     extends JUnit4RunListener
-    implements ConsoleOutputReceiver
+    implements TestOutputReceiver
 {
     private Description currentTestSetDescription;
 
     private Description lastFinishedDescription;
 
-    public NonConcurrentRunListener( RunListener reporter )
+    public NonConcurrentRunListener( TestRunListener reporter )
         throws TestSetFailedException
     {
         super( reporter );
@@ -58,7 +58,7 @@ public class NonConcurrentRunListener
     public synchronized void writeTestOutput( String output, boolean newLine, boolean stdout )
     {
         // We can write immediately: no parallelism and a single class.
-        ( (ConsoleOutputReceiver) reporter ).writeTestOutput( output, newLine, stdout );
+        reporter.writeTestOutput( output, newLine, stdout );
     }
 
     @Override
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
index ae38976..164c71d 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestMethod.java
@@ -20,10 +20,10 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import org.apache.maven.surefire.api.report.CategorizedReportEntry;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
+import org.apache.maven.surefire.api.report.TestOutputReceiver;
 import org.apache.maven.surefire.api.report.ConsoleOutputReceiverForCurrentThread;
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -34,7 +34,7 @@ import java.util.concurrent.atomic.AtomicReference;
  * without any actual parallel access
  */
 class TestMethod
-    implements ConsoleOutputReceiver
+    implements TestOutputReceiver
 {
     private static final InheritableThreadLocal<TestMethod> TEST_METHOD = new InheritableThreadLocal<>();
 
@@ -112,7 +112,7 @@ class TestMethod
         return endTime;
     }
 
-    void replay( RunListener reporter )
+    void replay( TestRunListener reporter )
     {
         if ( testIgnored != null )
         {
@@ -125,7 +125,7 @@ class TestMethod
             LogicalStream ls = output.get();
             if ( ls != null )
             {
-                ls.writeDetails( (ConsoleOutputReceiver) reporter );
+                ls.writeDetails( reporter );
             }
 
             if ( testFailure != null )
diff --git a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
index 694257e..8f30186 100644
--- a/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
+++ b/surefire-providers/surefire-junit47/src/main/java/org/apache/maven/surefire/junitcore/TestSet.java
@@ -20,8 +20,8 @@ package org.apache.maven.surefire.junitcore;
  */
 
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.report.SimpleReportEntry;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 
 import java.util.Collection;
@@ -60,7 +60,7 @@ public class TestSet
         this.testClassName = testClassName;
     }
 
-    public void replay( RunListener target )
+    public void replay( TestRunListener target )
     {
         if ( played.compareAndSet( false, true ) )
         {
@@ -133,7 +133,7 @@ public class TestSet
         testMethods.add( testMethod );
     }
 
-    public void incrementFinishedTests( RunListener reporterManager, boolean reportImmediately )
+    public void incrementFinishedTests( TestRunListener reporterManager, boolean reportImmediately )
     {
         numberOfCompletedChildren.incrementAndGet();
         if ( allScheduled && isAllTestsDone() && reportImmediately )
@@ -142,7 +142,7 @@ public class TestSet
         }
     }
 
-    public void setAllScheduled( RunListener reporterManager )
+    public void setAllScheduled( TestRunListener reporterManager )
     {
         allScheduled = true;
         if ( isAllTestsDone() )
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
index 8940b51..c512a51 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/ConcurrentRunListenerTest.java
@@ -27,7 +27,7 @@ import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
 import org.apache.maven.surefire.api.report.ConsoleStream;
 import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.report.RunStatistics;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
 
@@ -149,7 +149,7 @@ public class ConcurrentRunListenerTest
         DefaultReporterFactory reporterFactory = createReporterFactory();
         HashMap<String, TestSet> classMethodCounts = new HashMap<>();
         final ConsoleStream defaultConsoleReporter = new DefaultDirectConsoleReporter( System.out );
-        RunListener reporter =
+        TestRunListener reporter =
             new ClassesParallelRunListener( classMethodCounts, reporterFactory, defaultConsoleReporter );
         JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts );
         RunStatistics result = runClasses( reporterFactory, runListener, classes );
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
index defc3a9..6a36bdc 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/JUnitCoreTester.java
@@ -25,10 +25,9 @@ import org.apache.maven.plugin.surefire.extensions.SurefireStatelessReporter;
 import org.apache.maven.plugin.surefire.extensions.SurefireStatelessTestsetInfoReporter;
 import org.apache.maven.plugin.surefire.log.api.NullConsoleLogger;
 import org.apache.maven.plugin.surefire.report.DefaultReporterFactory;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.junit.runner.Computer;
 import org.junit.runner.JUnitCore;
@@ -66,9 +65,9 @@ public class JUnitCoreTester
         try
         {
             final HashMap<String, TestSet> classMethodCounts = new HashMap<>();
-            RunListener reporter = createInstance( classMethodCounts, reporterManagerFactory, parallelClasses, false,
-                                                         new DefaultDirectConsoleReporter( System.out ) );
-            startCapture( (ConsoleOutputReceiver) reporter );
+            TestRunListener reporter = createInstance( classMethodCounts, reporterManagerFactory, parallelClasses,
+                false, new DefaultDirectConsoleReporter( System.out ) );
+            startCapture( reporter );
 
             JUnitCoreRunListener runListener = new JUnitCoreRunListener( reporter, classMethodCounts );
             JUnitCore junitCore = new JUnitCore();
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java
index 3694f92..e533bf6 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/MockReporter.java
@@ -23,7 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.maven.surefire.api.report.ReportEntry;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.report.TestSetReportEntry;
 import org.apache.maven.surefire.api.report.RunMode;
 
@@ -31,7 +31,7 @@ import org.apache.maven.surefire.api.report.RunMode;
  * Internal tests use only.
  */
 final class MockReporter
-    implements RunListener
+    implements TestRunListener
 {
     private final List<String> events = new ArrayList<>();
 
@@ -136,4 +136,10 @@ final class MockReporter
     {
         return events.contains( event );
     }
+
+    @Override
+    public void writeTestOutput( String output, boolean newLine, boolean stdout )
+    {
+
+    }
 }
diff --git a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
index 38690ae..eb8f736 100644
--- a/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
+++ b/surefire-providers/surefire-junit47/src/test/java/org/apache/maven/surefire/junitcore/Surefire746Test.java
@@ -46,12 +46,12 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.maven.surefire.api.booter.BaseProviderFactory;
 import org.apache.maven.surefire.api.booter.ProviderParameterNames;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.common.junit4.JUnit4RunListener;
 import org.apache.maven.surefire.common.junit4.Notifier;
 import org.apache.maven.surefire.api.report.DefaultDirectConsoleReporter;
 import org.apache.maven.surefire.api.report.ReporterConfiguration;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
 import org.apache.maven.surefire.api.suite.RunResult;
 import org.apache.maven.surefire.api.testset.TestSetFailedException;
 import org.apache.maven.surefire.api.util.TestsToRun;
@@ -120,7 +120,7 @@ public class Surefire746Test
 
         final Map<String, TestSet> testSetMap = new ConcurrentHashMap<>();
 
-        RunListener listener = ConcurrentRunListener.createInstance( testSetMap, reporterFactory, false, false,
+        TestRunListener listener = ConcurrentRunListener.createInstance( testSetMap, reporterFactory, false, false,
                 new DefaultDirectConsoleReporter( System.out ) );
 
         TestsToRun testsToRun = new TestsToRun( Collections.<Class<?>>singleton( TestClassTest.class ) );
@@ -172,13 +172,13 @@ public class Surefire746Test
         @Override
         public void run( RunNotifier notifier )
         {
-            notifier.addListener( new TestRunListener() );
+            notifier.addListener( new Listener() );
             super.run( notifier );
         }
 
     }
 
-    private static class TestRunListener extends org.junit.runner.notification.RunListener
+    private static class Listener extends org.junit.runner.notification.RunListener
     {
         @Override
         public void testFinished( Description description ) throws Exception
diff --git a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
index 5878248..583ebd7 100644
--- a/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
+++ b/surefire-providers/surefire-testng/src/main/java/org/apache/maven/surefire/testng/TestNGProvider.java
@@ -25,10 +25,9 @@ import org.apache.maven.surefire.api.provider.CommandListener;
 import org.apache.maven.surefire.api.cli.CommandLineOption;
 import org.apache.maven.surefire.api.provider.AbstractProvider;
 import org.apache.maven.surefire.api.provider.ProviderParameters;
-import org.apache.maven.surefire.api.report.ConsoleOutputReceiver;
 import org.apache.maven.surefire.api.report.ReporterConfiguration;
 import org.apache.maven.surefire.api.report.ReporterFactory;
-import org.apache.maven.surefire.api.report.RunListener;
+import org.apache.maven.surefire.api.report.TestRunListener;
 import org.apache.maven.surefire.api.suite.RunResult;
 import org.apache.maven.surefire.testng.utils.FailFastEventsSingleton;
 import org.apache.maven.surefire.api.testset.TestListResolver;
@@ -98,12 +97,12 @@ public class TestNGProvider
         }
 
         final ReporterFactory reporterFactory = providerParameters.getReporterFactory();
-        final RunListener reporter = reporterFactory.createReporter();
+        final TestRunListener reporter = reporterFactory.createReporter();
         /*
          * {@link org.apache.maven.surefire.api.report.ConsoleOutputCapture#startCapture(ConsoleOutputReceiver)}
          * called in prior to initializing variable {@link #testsToRun}
          */
-        startCapture( (ConsoleOutputReceiver) reporter );
+        startCapture( reporter );
 
         RunResult runResult;
         try