I have a multi-module project. My POM structure is like below
root/pom.xml
<modules>
<!-- a,b,c & d are not dependent on each other. -->
<module>a</module>
<module>b</module>
<module>c</module>
<module>d</module>
</modules>
I am running surefire with reuseForks = true, forkCount = 1. If I am
executing all tests at the root level with mvn -T 2 test. How will tests be
executed?
Assuming maven picks modules *a* and *b* to be executed first. Then module
*a* and Module *b* tests will be executed in two separate JVM and once
those are finished. There will be two new JVM spawned which will execute
all tests for module c and module d.
Is my above understanding correct or the same two JVMs will be reused for
executing tests for module *c* and module *d?*
I am using surefire 3.0.0-M7. My entire surefire config in root/pom.xml
looks like below.
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<configuration>
<systemPropertyVariables>
<!-- System properties to be applied to all tests -->
<grpc.enabled>false</grpc.enabled>
<management.metrics.export.datadog.enabled>false
</management.metrics.export.datadog.enabled>
<spring.profiles.active>test</spring.profiles.active>
<spring.zipkin.enabled>false</spring.zipkin.enabled>
<spring.test.context.cache.maxSize>3</spring.test.context.cache.maxSize>
<user.language>en</user.language>
<user.region>US</user.region>
<ut.forkNumber>$${surefire.forkNumber}</ut.forkNumber>
</systemPropertyVariables>
<!--These values are chosen experimentally-->
<argLine>
-Xms512m -Xmx3g -XX:MaxDirectMemorySize=512m
-XX:MaxMetaspaceSize=768m
-XX:+HeapDumpOnOutOfMemoryError @{argLine}
<!-- https://github.com/RuedigerMoeller/fast-serialization#mvn
-->
--add-modules=jdk.incubator.foreign
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.math=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.sql/java.sql=ALL-UNNAMED
<!-- Needed only for TestingUtils.parseJsonToPojo -->
--add-opens=java.base/java.time=ALL-UNNAMED
<!-- For wiremock -->
--add-opens=java.xml/com.sun.org.apache.xpath.internal.jaxp=ALL-UNNAMED
</argLine>
<!-- Runs test suite / classes in parallel-->
<parallel>suitesAndClasses</parallel>
<perCoreThreadCount>false</perCoreThreadCount>
<!--Uncomment the two lines below if you want to redirect all
mvn test results into files.-->
<!--<redirectTestOutputToFile>true</redirectTestOutputToFile>-->
<!--<reportsDirectory>${project.build.directory}/test-reports</reportsDirectory>-->
<!-- Starts multiple JVMs and runs tests in parallel-->
<forkCount>1</forkCount>
<reuseForks>true</reuseForks>
</configuration>
</plugin>
<plugin>