A new version of JUnit v5.3 was released last week. There are some changes and new features like parallel test execution, enhancements to AssertThrows, and others in this new version.
JUnit is a popular unit testing framework for the Java which has been instrumental to the rise of test-driven development.
Below are some of the key highlights of JUnit 5.3.
Capturing output from a console
It is now possible to capture System.out and System.err output using a TestExecutionListener in Junit 5.3. Capturing console output may not be a frequent need, but can become necessary in some cases such as when working on legacy code bases where statements are being written to console and viewing them can be useful. There are two steps to get this working, implementing a TestExecutionListener and configuring surefire to start capturing console output.
Enhancements to AssertThrows
The assertThrows assertion is updated to display the value a method returns. This works only if the method runs successfully and returns a value and no exception is thrown. It can be helpful for debugging a failing test case.
Parallel test execution
Parallel test execution is now enabled and can be configured via build files. This can be a pom.xml, build.gradle etc. The parallel test execution behavior can be changed at both, method and class levels with the annotations: @Execution and @ResourceLock. For detailed information on configuring and using parallel test execution in JUnit 5, check out the user guide.
There are also some libraries and tools updated that are used with JUnit like filtering changes with native support, enhanced mockito dependency injection support, updates to AssertJ Soft Assertions and opentest4J.
JUnit 5.3.1 was released on September 9, shortly after JUnit 5.3 and there are some minor fixes. There is another major change where variants of assertThrows() introduced in JUnit 5.3.0 that accepted ThrowingSupplier arguments are now removed.