The Apache Maven team is pleased to announce the release of the
Apache Maven Surefire Plugin, version 3.0.0-M6.

The release contains 111 bug fixes.
Again we received contributions from the community in form of bug reports
and bug fixes. Thank you and keep them coming!

You should specify the version in your project’s plugin configuration:



or for failsafe:



or for surefire-report:



You can download the appropriate sources etc. from the download page.

Release Notes – Maven Surefire – Version 3.0.0-M6

  • Bugs:

    • SUREFIRE-1398 – TestNG test fails when both JUnitCore provider and TestNG provider are on classpath
    • SUREFIRE-1426 – Fork crash doesn’t fail build with -Dmaven.test.failure.ignore=true
    • SUREFIRE-1432 – trimStackTrace = false by default
    • SUREFIRE-1556 – Test XML file is not valid when rerun “fails” with an assumption
    • SUREFIRE-1659 – Log4j logger in TestExecutionListener corrupts Surefire’s STDOUT.
    • SUREFIRE-1800 – SurefireForkChannel binds to wrong IP
    • SUREFIRE-1806 – Site: Link to “TCP/IP Communication between Forks” is broken
    • SUREFIRE-1809 – Differences between Oracle JDK and AdoptOpenJDK caused by JPMS
    • SUREFIRE-1815 – Thread interrupted state cleared on any console output
    • SUREFIRE-1820 – Using SurefireForkNodeFactory with JDK8 results in NoSuchMethodError
    • SUREFIRE-1840 – Why sudo docker?
    • SUREFIRE-1842 – Surefire – NPE at end of successful test run
    • SUREFIRE-1844 – Trademarks / privacy policy footer displays broken
    • SUREFIRE-1851 – NPE in SmartStackTraceParser causes false positive test results
    • SUREFIRE-1857 – JUnit 5 report does not contain assertion failure message
    • SUREFIRE-1865 – ChecksumCalculator getSha1 does not compute checksums correctly
    • SUREFIRE-1869 – Classloader.getResource() doesn’t encode blanks with forkCount=0
    • SUREFIRE-1881 – Java agent printing to native console makes build block when using SurefireForkNodeFactory
    • SUREFIRE-1882 – Fix failures when compiled on Java 9+ and run on Java 8
    • SUREFIRE-1890 – Not compatible with TestNG 7.4.0
    • SUREFIRE-1894 – Surefire report XML schema is incomplete (attribute version not allowed in testsuite)
    • SUREFIRE-1909 – Support JUnit 5 reflection access by changing add-exports to add-opens
    • SUREFIRE-1910 – Missleading error message when using -Dtest=….
    • SUREFIRE-1912 – user.dir should not be set lazily within the surefire fork JVM
    • SUREFIRE-1913 – system properties should be restored after the in-process tests have been executed
    • SUREFIRE-1914 – XML report omits method signature / display name of Junit 5 parameterized tests if testset reporter is configured to use phrased naming
    • SUREFIRE-1926 – Console logs should be synchronized
    • SUREFIRE-1935 – Upgrade to JUnit Platform 1.8, start Launcher via LauncherSession
    • SUREFIRE-1945 – crashed tests – unit tests with large logging output does not produce surefire report
    • SUREFIRE-1967 – High resource consumption when executing TestNG tests in parallel mode with a suite file
    • SUREFIRE-1975 – JDK18 – The Security Manager is deprecated and will be removed in a future release
    • SUREFIRE-1982 – Fix failures (java.nio.ChartBuffer) when compiled on Java 9+ and run on Java 8
    • SUREFIRE-1983 – Corrupted STDOUT by directly writing to native stream in forked JVM 1. [setupJunitLogger() should be called AFTER startCapture()]
    • SUREFIRE-1990 – The previous XML report should be deleted before new run or re-run
    • SUREFIRE-1993 – Failsafe fails to detect module dependencies
    • SUREFIRE-2002 – TCP client throws WritePendingException
    • SUREFIRE-2006 – Don’t use Services Transformer in shadefire
    • SUREFIRE-2023 – The integration test Surefire946KillMainProcessInReusableForkIT hanged and timed out because SIGTERM happened before the first test has started. The plugin should be able to terminate itself whenever after SIGTERM.
    • SUREFIRE-2036 – Regression: 3.0.0-M5 fails with configured JUnit 5 provider
    • SUREFIRE-2040 – No tests executed with junit-platform-suite and -Dtest=TestSuite
  • New Features:

    • SUREFIRE-756 – Allow ability to capture executed random runOrder for re-play purposes
    • SUREFIRE-1854 – Support include/exclude junit test engine
    • SUREFIRE-1860 – extend ReportEntry interface and SimpleReportEntry with mandatory properties runMode:String, testRunId:long
    • SUREFIRE-1878 – Add failOnFlakeCount option
    • SUREFIRE-1893 – New maven-surefire JUnit5 extension by Fabricio Yamamoto
    • SUREFIRE-1964 – Method filtering support on excludes and includes file
  • Improvements:

    • SUREFIRE-1824 – failsafe-summary.xml should properly use UTF-8
    • SUREFIRE-1825 – Unable to zip the Cucumber TXT report file on Linux and MacOS
    • SUREFIRE-1826 – Improved performance of ThreadedStreamConsumer
    • SUREFIRE-1827 – The console output is not flushed
    • SUREFIRE-1845 – Fixed the performance of Utf8RecodingDeferredFileOutputStream as a bottleneck for the tests with logs
    • SUREFIRE-1846 – Remove Base64 in the Encoder/Decoder and gain the performance for the communication flow: Fork to Plugin
    • SUREFIRE-1847 – Remove Base64 in the Encoder/Decoder and gain the performance for the communication flow: Plugin to Fork
    • SUREFIRE-1853 – Clarify useModulePath documentation
    • SUREFIRE-1856 – Updated documentation for the TestNG Provider – may not disable JUnit in suiteXmlFiles
    • SUREFIRE-1858 – Change default debug options to not use legacy options
    • SUREFIRE-1954 – move inner class ProviderList to upper level
    • SUREFIRE-1955 – Switch project to Java 8
    • SUREFIRE-1957 – Get rid of maven-artifact-transfer
    • SUREFIRE-1958 – Replace fest-assert by AssertJ
    • SUREFIRE-1959 – Update plugin (requires Maven 3.2.5+)
    • SUREFIRE-1965 – Refactor beanshell script in project
    • SUREFIRE-1972 – Use current version of surefire-shared-utils
    • SUREFIRE-1987 – Refactor ProviderDetector#autoDetectOneWellKnownProvider
    • SUREFIRE-1992 – Increase output length of test errors/failures in summary
    • SUREFIRE-1994 – Upgrade and configure javacc-maven-plugin in module surefire-grouper
    • SUREFIRE-1995 – Ping and process checker should use isolated schedulers and the errors should be logged
    • SUREFIRE-1997 – InterruptedIOException and cause:InterruptedException have the same purpose and should be caught in CommandReader
    • SUREFIRE-1998 – Interrupted PPID Checker should have the same meaning as stopped PPID Checker
    • SUREFIRE-1999 – PPID checker should redirect the error stream of the checker command to a dump file
    • SUREFIRE-2005 – Improved dump message “Boot Manifest-JAR contains absolute paths in classpath” with exception message
    • SUREFIRE-2009 – Refactoring of surefire-junit3. JUnitTestSetExecutor and PojoTestSetExecutor should be stateless.
    • SUREFIRE-2011 – Updated abstractions which helps associating standard out/err with a test
    • SUREFIRE-2012 – Use maven-shared-utils instead of surefire-shared-utils in Report Parser. Removed commons-lang in Report Plugin.
    • SUREFIRE-2014 – Implement testRunId and RunMode in the EventEncoder and EventDecoder
    • SUREFIRE-2015 – Implement testRunId and RunMode in the SimpleReportEntry
    • SUREFIRE-2016 – The MOJO parameter testSourceDirectory is used only in the TestNG HTML, and it should be optional. Javadoc and documentation should be fixed.
    • SUREFIRE-2017 – Unstable build with ParallelParameterized
    • SUREFIRE-2019 – ThreadedStreamConsumer – use Thread.join() instead of CountDownLatch.await()
    • SUREFIRE-2020 – Use addShutDownHook() from maven-shared-utils
    • SUREFIRE-2021 – Commands should be flushed immediately. Use Channels.newChannel() instead of newBufferedChannel(). Delete the old flushing mechanism on forked processes.
    • SUREFIRE-2024 – Replace testng-junit5 by testng-engine in tests and documentation
    • SUREFIRE-2025 – Updated abstractions which helps associating systemProperties() with a test context
    • SUREFIRE-2026 – Improve assertions in Surefire1787JUnit5IT
    • SUREFIRE-2031 – Both fields/parameters “includes” and “excludes” should be in target MOJO class. User properties should be unique.
    • SUREFIRE-2042 – Remove unused method TestListResolver#getWildcard
    • SUREFIRE-2046 – Resolved TODOs. Updated callbacks ForkedProcessPropertyEventListener and ForkedProcessStandardOutErrEventListener.
    • SUREFIRE-2051 – Propagate ArtifactResolutionException while resolving artifacts in SurefireDependencyResolver
    • SUREFIRE-2052 – Handles internal exceptions do not have suppressed exceptions in ThreadedStreamConsumer
  • Test:

  • Wish:

    • SUREFIRE-1908 – Wish by Stackoverflow – Documented strategy with parallel Java packages
  • Tasks:

    • SUREFIRE-1807 – Shadefire should not duplicate entries in Provider SPI
    • SUREFIRE-1889 – Support Java 16 in Surefire Integration Tests
  • Dependency upgrades:


-The Apache Maven team