You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Tibor Digana (Jira)" <ji...@apache.org> on 2022/02/16 04:30:00 UTC

[jira] [Closed] (SUREFIRE-2011) Updated abstractions which helps associating standard out/err with a test

     [ https://issues.apache.org/jira/browse/SUREFIRE-2011?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tibor Digana closed SUREFIRE-2011.
----------------------------------
    Resolution: Fixed

https://gitbox.apache.org/repos/asf?p=maven-surefire.git;a=commit;h=0f92105cc8bc6cefde3712efe0cf49ad0241105e

> Updated abstractions which helps associating standard out/err with a test
> -------------------------------------------------------------------------
>
>                 Key: SUREFIRE-2011
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-2011
>             Project: Maven Surefire
>          Issue Type: Improvement
>          Components: JUnit 3.x support, Junit 4.7+ (parallel) support, Junit 4.x support, JUnit 5.x support, Maven Failsafe Plugin, Maven Surefire Plugin, process forking, TestNG support
>            Reporter: Tibor Digana
>            Assignee: Tibor Digana
>            Priority: Major
>             Fix For: 3.0.0-M6
>
>
> After the previous refactoring of surefire-junit3, we should continue with updating the abstraction in order to complete SUREFIRE-1860. The changes in SUREFIRE-1860 are big and therefore I would like to split them to an abstraction in PR, continue with another PRs regarding implementation of encoder/decoder, {{SimpleReportEntry}}. It would give us the opportunity to associate the std/out/err logs with test run id (Thread) and deterministically create the reports. This way we will fix pending issues (a problem with parallel logs in junit5 tests, and simplify the listeners in {{surefire-junit47}} provider) in the future. So I am going to split the work in several Jiras.
> The method {{writeTestOutput( String output, boolean newLine, boolean stdout )}} appeared in {{ForkingRunListener}} and {{TestSetRunListener}} and it is called by {{ConsoleOutputCapture}}. The signature of this method will be changed.
> The provider listeners can be stateful but the {{ForkingRunListener}} must be stateless.
> The meta information (testRunId and Thread) will be associated with the particular run of the test method in the implementation of provider's {{RunListener}}. So the listener should have this meta information and the {{ForkingRunListener}} should not have it. We will implement enum {{RunMode}}, {{testRunId:long}}, {{TestOutputReportEntry}} and we will introduce a new interface {{TestReportListener}}. Method signatures will be changed to {{TestOutputReceiver#writeTestOutput(TestOutputReportEntry)}} and {{EventChannelEncoder#testOutput(TestOutputReportEntry)}}. We will remove {{ConsoleStream}} interface and {{ConsoleLogger}} will be used instead. Any combinations of two interfaces out of three {{(RunListener, TestOutputReceiver, ConsoleLogger)}} are avoided and the only {{TestReportListener}} will be used. Simplified code around logger in {{JUnitCoreProvider}}. We will rename a creator method {{createReporter()}} in {{ReporterFactory}}.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)