Praveen Narala created MNG-7317:
-----------------------------------
Summary: Junit 5 in parallel execution mode confuses Surefire
Console logs
Key: MNG-7317
URL: https://issues.apache.org/jira/browse/MNG-7317
Project: Maven
Issue Type: Bug
Components: Logging, POM
Reporter: Praveen Narala
When I use Junit 5 to run the tests in parallel (not using Surefire Forking),
the console logs are confusing when the test failed.
As per Junit 5 documentation, when you use Junit 5 for parallelism, the tests
will run using different Forking threads in the same process. And, when there
is a test failure, Surefire is logging respective test failure logs. Instead,
it is just picking random logs from different threads.
*Would it be possible to get the right logs for failed tests?*
*Junit 5 Configuration from Surefire Plugin:*
{code:java}
Tests run:
[INFO] --- maven-surefire-plugin:3.0.0-M5:test (default-test) @ api-test ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.test.abc.ABCTests
[INFO] Running com.test.abc.XYZTests
[INFO] Running com.test.abc.ATests
[INFO] Running com.test.abc.GetLogsTests
[INFO] Running com.test.abc.FoldersTests
[INFO] Running com.test.abc.NameTests
{code}
*Example Logs from Console:*
{code:java}
NFO |1026-103227268|ForkJoinPool-1-worker-3|abc.ABCTests||||||About to execute
test [delegatedUserAccount] - GUID [random-guid] and data [[1]
com.test.abc.ABCTestData@37589144]
INFO |1026-103227268|ForkJoinPool-1-worker-13|abc.XYZTests||||||About to
execute test [getTestId] - GUID [random-guid] and data [[1]
com.test.abc.data.XYZTestData@4c506080]
INFO |1026-103227268|ForkJoinPool-1-worker-5|abc.ATests||||||About to execute
test [getFolderTest] - GUID [0e1141b0-3445-36f7-879a-2f12f3de87a7] and data
[[1] com.test.abc.data.FoldersTestData@484d6599]
INFO |1026-103227268|ForkJoinPool-1-worker-7|abc.GetLogsTests||||||About to
execute test [getIds] - GUID [random-guid] and data [[1]
com.test.abc.data.GetLogsTestData@4cf26b0c]
{code}
_When there is any test failure from the execution, we see logs from all
different threads like below..._
{code:java}
INFO |1026-103227268|ForkJoinPool-1-worker-3|abc.ABCTests||||||About to execute
test [delegatedUserAccount] - GUID [random-guid] and data [[1]
com.test.abc.ABCTestData@37589144]
INFO |1026-103227268|ForkJoinPool-1-worker-13|abc.XYZTests||||||About to
execute test [getTestId] - GUID [random-guid] and data [[1]
com.test.abc.data.XYZTestData@4c506080]
INFO |1026-103227268|ForkJoinPool-1-worker-5|abc.ATests||||||About to execute
test [getFolderTest] - GUID [0e1141b0-3445-36f7-879a-2f12f3de87a7] and data
[[1] com.test.abc.data.FoldersTestData@484d6599]
INFO |1026-103227268|ForkJoinPool-1-worker-7|abc.GetLogsTests||||||About to
execute test [getIds] - GUID [random-guid] and data [[1]
com.test.abc.data.GetLogsTestData@4cf26b0c]
{code}
*Expected Behavior*
It would be good to have console logs at the Test case level rather than
picking up from random threads though we run tests using Junit 5 or Surefire
Forks (JVMs).
*Steps To Reproduce*
Use Junit 5 Configuration from Maven Surefire Plugin v3.0.0-M5 with JDK11.
{code:java}
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.plugin.version}</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
<includes>
<include>**/*Test.java</include>
<include>**/*Tests.java</include>
</includes>
<properties>
<!--includeTags & excludeTags don't work with Surefire v3.0.0-M5.
Same thing now works with groups (Groups are nothing but Tags)-> means all
Included Tags,
excludedGroups -> means Excluded Tags. While running the tests using maven
command
with the help of Tags,either we should use -DTags/-Dgroups-->
<groups>${Tags}</groups>
<excludedGroups>Skip, WIP</excludedGroups>
<!-- Parallel execution using Junit 5 -->
<configurationParameters>
junit.jupiter.conditions.deactivate = *
junit.jupiter.extensions.autodetection.enabled = true
junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = concurrent
junit.jupiter.execution.parallel.config.strategy=fixed
junit.jupiter.execution.parallel.config.fixed.parallelism=6
junit.jupiter.testinstance.lifecycle.default = per_class
</configurationParameters>
</properties>
<systemPropertyVariables>
<!-- https://bugs.openjdk.java.net/browse/JDK-8212755 -->
<java.locale.providers>COMPAT</java.locale.providers>
</systemPropertyVariables>
</configuration>
</plugin>{code}
Run the tests using the maven command to run the tests in parallel using Tags...
{code:java}
mvn -Dgroups=TestingTag{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)