You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Ashish Vijaywargiya <as...@hotwaxsystems.com> on 2026/05/27 10:20:11 UTC

Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

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

Re: Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

Posted by Arun Patidar <ar...@hotwax.co>.
Hi Ashish,

+1 for migrating the Apache OFBiz testing framework from JUnit 4 to JUnit 6.


Best regards,
Arun Patidar

On Wed, May 27, 2026 at 3:51 PM Ashish Vijaywargiya <
ashish.vijaywargiya@hotwaxsystems.com> 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
>

Re: Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

Posted by Ashish Vijaywargiya <as...@hotwaxsystems.com>.
Hello,

I liked the post below from the Medium platform. Sharing it here for reference
purposes.

What’s new in JUnit 6: Key Changes and Improvements
https://medium.com/javarevisited/whats-new-in-junit-6-key-changes-and-improvements-551a84d7ed1f

--
Kind Regards,
Ashish Vijaywargiya
Vice President of Operations
*HotWax Systems*
*Enterprise open source experts*
http://www.hotwaxsystems.com



On Sat, May 30, 2026 at 11:25 AM Ashish Vijaywargiya <
ashish.vijaywargiya@hotwaxsystems.com> wrote:

> 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 <ar...@hotwax.co>
> 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 <
>> dev@ofbiz.apache.org>
>> 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 <
>> > > ashish.vijaywargiya@hotwaxsystems.com> 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
>> > >>
>> > >>
>> >
>>
>

Re: Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

Posted by Ashish Vijaywargiya <as...@hotwaxsystems.com>.
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 <ar...@hotwax.co>
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 <
> dev@ofbiz.apache.org>
> 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 <
> > > ashish.vijaywargiya@hotwaxsystems.com> 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
> > >>
> > >>
> >
>

Re: Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

Posted by Arun Patidar <ar...@hotwax.co>.
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 <de...@ofbiz.apache.org>
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 <
> > ashish.vijaywargiya@hotwaxsystems.com> 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
> >>
> >>
>

Re: Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

Posted by Nicolas Malin via dev <de...@ofbiz.apache.org>.
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 <
> ashish.vijaywargiya@hotwaxsystems.com> 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
>>
>>

Re: Migrating Apache OFBiz trunk code base from JUnit 4.13.x to JUnit 6.1.x

Posted by Ashish Vijaywargiya <as...@hotwaxsystems.com>.
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 <
ashish.vijaywargiya@hotwaxsystems.com> 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
>
>