Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.22.1, 3.0.0-M2
-
None
Description
When JUnit Jupiter's Vintage Engine is used to run tests written using the JUnit 4 API, output to the console from a TestRunner results in Surefire's STDOUT being corrupted:
[WARNING] Corrupted STDOUT by directly writing to native stream in forked JVM 1. See FAQ web page and the dump file […]
Note that the test runner is simply calling System.out. This is to simulate the real world setup where the runner performs some logging that ultimately results in a console appender calling System.out. The same arrangement does not cause a problem when run using JUnit 4. An initial investigation suggests that the Vintage Engine calls the custom TestRunner earlier and, it would appear, at a time when Surefire cannot tolerate output to System.out.
I have attached a minimal project that reproduces the problem. Running ./mvnw -Pjunit5 test will reproduce the corruption. Running ./mvnw -Pjunit4 test will not.
Attachments
Attachments
Issue Links
- relates to
-
SUREFIRE-1659 Log4j logger in TestExecutionListener corrupts Surefire's STDOUT.
- Closed
- links to