Interface TestReportListener<T extends OutputReportEntry>

Type Parameters:
T - usually TestOutputReportEntry or OutputReportEntry
All Superinterfaces:
ConsoleLogger, RunListener, TestOutputReceiver<T>
All Known Implementing Classes:
ForkingRunListener

public interface TestReportListener<T extends OutputReportEntry> extends RunListener, TestOutputReceiver<T>, ConsoleLogger
This architecture has two sides (forked JVM, plugin JVM) implementing the same interface TestReportListener:
 1. publisher - surefire fork JVM: ForkingRunListener
    registered in SurefireProvider
 2. consumer - plugin JVM: TestSetRunListener registered in the ForkClient
 
Both implementations of TestReportListener, i.e. ForkingRunListener and TestSetRunListener are decorators. They are used as delegators in interface adapters, see the implementations of JUnit's RunListener RunListener-s.
The serialization of data in TestReportListener ensures that the ReportEntries are transferred from the fork to the plugin.
Note: The adapters in the module surefire-junit47 are temporal and will be removed after we have fixed the SUREFIRE-1860 and XML reporter in SUREFIRE-1643. The adapters are a workaround of a real fix in both Jira issues.