[ https://issues.apache.org/jira/browse/SUREFIRE-1659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16864660#comment-16864660 ]
Tibor Digana commented on SUREFIRE-1659: ---------------------------------------- [~Srdo] [~rkraneis] I think this is caused by eager initialization of {{Launcher}} in Surefire class {{JUnitPlatformProvider}}. You can contribute in Surefire project at GitHub and fix it in a new pulrequest. Try to encapsulate {{launcher}}, {{filters}} and {{configurationParameters}} and initialize lazily in a new private method. The method {{invoke( Object forkTestSet )}} should call {{startCapture( ( ConsoleOutputReceiver ) runListener )}} first and then lazy initialization. > Log4j logger in TestExecutionListener corrupts Surefire's STDOUT. > ----------------------------------------------------------------- > > Key: SUREFIRE-1659 > URL: https://issues.apache.org/jira/browse/SUREFIRE-1659 > Project: Maven Surefire > Issue Type: Bug > Affects Versions: 3.0.0-M3 > Reporter: Stig Rohde Døssing > Priority: Major > Attachments: surefire-stdout-corrupt.zip > > > I have a project that registers a JUnit 5 TestExecutionListener. The > TestExecutionListener contains an SLF4j Logger, using Log4j2 as the > underlying library. There is a log4j2.xml on the classpath, logging to > console, and Surefire is set up to redirect output. > Running the tests gives the following result. > {quote} > [WARNING] Corrupted STDOUT by directly writing to native stream in forked JVM > 1. See FAQ web page and the dump file ... > {quote} > I've attached a minimal reproduction. > Doing either of the following eliminates the error: > * Not having the log4j2.xml on the classpath > * Not having the Logger in the TestExecutionListener -- This message was sent by Atlassian JIRA (v7.6.3#76005)