Thank you, Nicolas and Arun! I have just merged my PR - https://github.com/apache/ofbiz-framework/pull/1301 into the ofbiz trunk codebase.
I will keep a close eye on the Dev mailing list and assist with JUnit 6.1.0-related issues. Now the OFBiz trunk codebase will run on the JUnit 6.1.0 testing framework version. Thank you. -- Kind Regards, Ashish Vijaywargiya Vice President of Operations *HotWax Systems* *Enterprise open source experts* http://www.hotwaxsystems.com On Sat, May 30, 2026 at 10:44 AM Arun Patidar <[email protected]> wrote: > Hi Ashish, > > I have reviewed the PR, and it looks good to me. > > > Best regards, > --- > Arun Patidar > > > On Fri, May 29, 2026 at 10:51 PM Nicolas Malin via dev < > [email protected]> > wrote: > > > Hello Ashish, > > > > I have no objection to move to Junit 6. If you estimate that there is an > > advantage to do, without objection from other let's go :) > > > > I admit, I didn't use Junit, I use groovy for my test that I found more > > powerful > > > > Nicolas > > > > On 5/29/26 15:38, Ashish Vijaywargiya wrote: > > > Dear Apache OFBiz Dev Community Members, > > > > > > I am feeling glad to let you know that I have completed this > POC(Migrate > > > Apache OFBiz test suite from JUnit 4 to JUnit 6 (Jupiter)). > > > > > > The following details will be helpful to you(I have used most of the > > > details shown below in my commit as well): > > > > > > ================================= > > > Migrate Apache OFBiz test suite from JUnit 4 to JUnit 6 (Jupiter) > > > > > > Key changes include: > > > > > > - Assertions Parameter Order: Updated `assertEquals` calls to match the > > new > > > JUnit 6 method signature. > > > > > > The custom failure message is now passed as the last argument rather > than > > > the first `assertEquals(expected, actual, "message")`. > > > > > > - Exception Testing Syntax: Updated `assertThrows` to use JUnit Jupiter > > > API. > > > > > > > > > The following import statement has been changed and introduced jupiter > > > specific import statement: > > > > > > import org.junit.Test; --> import org.junit.jupiter.api.Test; > > > import org.junit.Before; --> import org.junit.jupiter.api.BeforeEach; > > > import org.junit.After; --> import org.junit.jupiter.api.AfterEach; > > > import org.junit.BeforeClass; --> import > org.junit.jupiter.api.BeforeAll; > > > import org.junit.AfterClass; --> import org.junit.jupiter.api.AfterAll; > > > import org.junit.Ignore; --> import org.junit.jupiter.api.Disabled; > > > import org.junit.Assert.*; --> import static > > > org.junit.jupiter.api.Assertions.*; > > > > > > Additionally, JUnit 4 assertions with failure messages must have their > > > parameters swapped because JUnit 4 expects (String message, expected, > > > actual) while JUnit 6 Jupiter expects (expected, actual, String > message): > > > > > > assertEquals(String, Object, Object) --> assertEquals(Object, Object, > > > String) > > > assertTrue(String, boolean) --> assertTrue(boolean, String) > > > assertFalse(String, boolean) --> assertFalse(boolean, String) > > > assertNotNull(String, Object) --> assertNotNull(Object, String) > > > assertNull(String, Object) --> assertNull(Object, String) > > > assertSame(String, Object, Object) --> assertSame(Object, Object, > String) > > > assertNotSame(String, Object, Object) --> assertNotSame(Object, Object, > > > String) > > > > > > And the following changes are also done in this commit: > > > > > > - @Before > > > + @BeforeEach > > > > > > - @After > > > + @AfterEach > > > > > > Important Reference Link: > > > https://docs.junit.org/6.1.0/migrating-from-junit4.html > > > ================================= > > > > > > Here is the PR for this work. > > > > > > https://github.com/apache/ofbiz-framework/pull/1301 > > > > > > > > > https://github.com/apache/ofbiz-framework/compare/trunk...ashishvijaywargiya:ofbiz-framework:junit-migration-from-v4-to-v6 > > > > > > I will wait for Apache OFBiz community members' feedback for the next > 2- > > 4 > > > days, and then I will merge my PR into the ofbiz trunk. > > > > > > Thank you! > > > > > > -- > > > Kind Regards, > > > Ashish Vijaywargiya > > > Vice President of Operations > > > *HotWax Systems* > > > *Enterprise open source experts* > > > http://www.hotwaxsystems.com > > > > > > > > > > > > On Wed, May 27, 2026 at 3:50 PM Ashish Vijaywargiya < > > > [email protected]> wrote: > > > > > >> Dear All, > > >> > > >> Yesterday, I was looking at the following Jira ticket: > > >> https://issues.apache.org/jira/browse/OFBIZ-13138 > > >> > > >> Then I thought to start a discussion around migrating the Apache OFBiz > > >> testing framework from JUnit 4 to JUnit 6 (JUnit Platform + Jupiter > > >> ecosystem). > > >> > > >> Currently, the OFBiz trunk codebase is primarily based on JUnit 4. > While > > >> JUnit 4 has served the Java ecosystem well for many years, the JUnit > > team > > >> has officially placed JUnit 4 into maintenance mode(see reference link > > >> below). According to the official JUnit project, only critical bug > fixes > > >> and security updates are expected going forward, while active > innovation > > >> and ecosystem improvements are focused on the JUnit Platform and > Jupiter > > >> ecosystem. > > >> > > >> Because of this, migrating OFBiz to JUnit 6 could provide long-term > > >> benefits in maintainability, modernization, ecosystem alignment, and > > >> testing capabilities. > > >> > > >> Some key benefits of migrating to JUnit 6 include: > > >> > > >> 1. Modern Testing Architecture > > >> JUnit 6 is built on the JUnit Platform architecture, which provides: > > >> > > >> * better modularity, > > >> * improved extensibility, > > >> * cleaner integrations, > > >> * and modern testing infrastructure. > > >> > > >> 2. Gradual Migration Support > > >> JUnit Vintage allows existing JUnit 4 tests to continue running while > > new > > >> tests are written using Jupiter APIs. > > >> This enables incremental migration without requiring a complete > rewrite > > of > > >> the entire OFBiz test suite. > > >> > > >> 3. Better Test Organization > > >> JUnit Jupiter introduces modern testing features such as: > > >> > > >> * @Nested tests, > > >> * @DisplayName, > > >> * grouped assertions using assertAll(), > > >> * dynamic tests, > > >> * and cleaner lifecycle handling. > > >> > > >> These features improve the readability and maintainability of complex > > test > > >> suites. > > >> > > >> 4. Improved Extension Model > > >> - JUnit 6 replaces the older Runner and Rule model with a much cleaner > > >> extension architecture. > > >> - This makes custom testing utilities easier to develop and maintain. > > >> > > >> 5. Enhanced Parameterized Testing > > >> - JUnit Jupiter significantly improves support for parameterized tests > > >> using: > > >> > > >> * CSV sources, > > >> * method sources, > > >> * enum sources, > > >> * and custom argument providers. > > >> > > >> This can help reduce repetitive test code across OFBiz modules. > > >> > > >> 6. Dependency Injection Support > > >> - JUnit Jupiter provides built-in parameter injection support for > > >> lifecycle methods and test methods. > > >> - This helps simplify test setup logic and reduces boilerplate code. > > >> > > >> 7. Conditional Test Execution > > >> - JUnit 6 supports conditional execution annotations such as: > > >> > > >> * @EnabledOnOs, > > >> * @EnabledOnJre, > > >> * @EnabledIfEnvironmentVariable, > > >> * and @DisabledIfSystemProperty. > > >> > > >> These features are useful for CI/CD pipelines and environment-specific > > >> test execution. > > >> > > >> 8. Parallel Test Execution > > >> - Modern JUnit versions provide better support for parallel execution > > >> which can help reduce overall CI execution time for large test suites. > > >> > > >> 9. Improved IDE and Tooling Support > > >> - Modern IDEs and build tools provide much stronger support for JUnit > > >> Jupiter: > > >> > > >> * improved debugging, > > >> * richer test reporting, > > >> * enhanced navigation, > > >> * better parameterized test visualization, > > >> * and improved test discovery. > > >> > > >> 10. Better Ecosystem Alignment > > >> - Most modern Java frameworks, libraries, plugins, and testing > utilities > > >> are actively aligned with the JUnit Platform ecosystem. > > >> - Migrating OFBiz helps keep the project aligned with modern Java > > >> development practices. > > >> > > >> 11. Unified and Cleaner Dependency Management > > >> - JUnit 6 provides unified versioning across Platform, Jupiter, and > > >> Vintage modules, which simplifies dependency management and reduces > > >> compatibility complexity. > > >> > > >> 12. Long-Term Sustainability > > >> - Since JUnit 4 is now in maintenance mode, continued reliance on it > > >> increases long-term technical debt. > > >> - Migrating to JUnit 6 helps future-proof the OFBiz testing > > infrastructure. > > >> > > >> A few reference links: > > >> https://docs.junit.org/6.1.0/migrating-from-junit4.html > > >> https://github.com/junit-team/junit4/blob/main/README.md > > >> https://junit.org/ > > >> > > >> I will work on this POC and will share updates soon with the OFBiz > > >> community. > > >> > > >> If you have additional thoughts on this topic, please share. > > >> Thank you. > > >> > > >> -- > > >> Kind Regards, > > >> Ashish Vijaywargiya > > >> Vice President of Operations > > >> *HotWax Systems* > > >> *Enterprise open source experts* > > >> http://www.hotwaxsystems.com > > >> > > >> > > >
