[ 
https://issues.apache.org/jira/browse/CASSANDRA-16630?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexey Zotov updated CASSANDRA-16630:
-------------------------------------
    Description: 
h3. Overview
Currently C* uses JUnit4 (version 4.12) which is obsolete. There is a newer 
version 4.13.2 which we could update to. However, JUnit4 is generally 
considered to be outdated and it is reasonable to migrate to JUnit5.

Despite of having a syntax sugar in JUnit5 (assertThrow, lamda's support, ect), 
there are no blockers that push us to move from JUnit4. The main motivation for 
this initiative is rule of thumb to use up-to-date versions of the dependencies.

Obviously this change is not backward compatible with the open PRs and previous 
C* versions. Therefore, it will require an additional effort for backporting 
the changes and updating PRs that have tests. However, I believe it should not 
be a blocker for this initiative.

h3. Scope (preliminary list)
# change JUnit4 to JUnit5 dependencies and make necessary changes in ant tasks 
(https://ant.apache.org/manual/Tasks/junitlauncher.html)
# update syntax in all tests (imports, Before/After annotations, etc)
# update parameterized tests
# create a new version of {{OrderedJUnit4ClassRunner}} and update corresponding 
tests
# update tests that use {{BMUnitRunner}} (as per 
https://developer.jboss.org/docs/DOC-52953 it supports JUnit5)
# update tests with {{@Rule}}
# update tests with expected exceptions

h3. Order of operations
In order to make the transition more smooth we want to use a phased approach:
# migrate to JUnit5 with [Vintage 
Engine|https://junit.org/junit5/docs/current/user-guide/#dependency-metadata-junit-vintage],
 so all JUnit4 tests work as is
# update tests in a few bunches (to not have a huge single PR with a bunch of 
conflicts)
# disable (remove dependency) Vintage Engine, so only JUnit5 tests work

  was:
h3. Overview
Currently C* uses JUnit4 (version 4.12) which is obsolete. There is a newer 
version 4.13.2 which we could update to. However, JUnit4 is generally 
considered to be outdated and it is reasonable to migrate to JUnit5.

Despite of having a syntax sugar in JUnit5 (assertThrow, lamda's support, ect), 
there are no blockers that push us to move from JUnit4. The main motivation for 
this initiative is rule of thumb to use up-to-date versions of the dependencies.

Obviously this change is not backward compatible with the open PRs and previous 
C* versions. Therefore, it will require an additional effort for backporting 
the changes and updating PRs that have tests. However, I believe it should not 
be a blocker for this initiative.

h3. Scope (preliminary list)
# change JUnit4 to JUnit5 dependencies and make necessary changes in ant tasks 
(https://ant.apache.org/manual/Tasks/junitlauncher.html)
# update syntax in all tests (imports, Before/After annotations, etc)
# update parameterized tests
# create a new version of {{OrderedJUnit4ClassRunner}} and update corresponding 
tests
# update tests that use {{BMUnitRunner}} (as per 
https://developer.jboss.org/docs/DOC-52953 it supports JUnit5)
# update tests with {{@Rule}}
# update tests with expected exceptions

h3. Order of operations
In order to make the transition more smooth we want to use a phased approach:
1. migrate to JUnit5 with [Vintage 
Engine|https://junit.org/junit5/docs/current/user-guide/#dependency-metadata-junit-vintage],
 so all JUnit4 tests work as is
2. update tests in a few bunches (to not have a huge single PR with a bunch of 
conflicts)
3. disable (remove dependency) Vintage Engine, so only JUnit5 tests work


> Migrate to JUnit5
> -----------------
>
>                 Key: CASSANDRA-16630
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16630
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Test/unit
>            Reporter: Alexey Zotov
>            Priority: Normal
>
> h3. Overview
> Currently C* uses JUnit4 (version 4.12) which is obsolete. There is a newer 
> version 4.13.2 which we could update to. However, JUnit4 is generally 
> considered to be outdated and it is reasonable to migrate to JUnit5.
> Despite of having a syntax sugar in JUnit5 (assertThrow, lamda's support, 
> ect), there are no blockers that push us to move from JUnit4. The main 
> motivation for this initiative is rule of thumb to use up-to-date versions of 
> the dependencies.
> Obviously this change is not backward compatible with the open PRs and 
> previous C* versions. Therefore, it will require an additional effort for 
> backporting the changes and updating PRs that have tests. However, I believe 
> it should not be a blocker for this initiative.
> h3. Scope (preliminary list)
> # change JUnit4 to JUnit5 dependencies and make necessary changes in ant 
> tasks (https://ant.apache.org/manual/Tasks/junitlauncher.html)
> # update syntax in all tests (imports, Before/After annotations, etc)
> # update parameterized tests
> # create a new version of {{OrderedJUnit4ClassRunner}} and update 
> corresponding tests
> # update tests that use {{BMUnitRunner}} (as per 
> https://developer.jboss.org/docs/DOC-52953 it supports JUnit5)
> # update tests with {{@Rule}}
> # update tests with expected exceptions
> h3. Order of operations
> In order to make the transition more smooth we want to use a phased approach:
> # migrate to JUnit5 with [Vintage 
> Engine|https://junit.org/junit5/docs/current/user-guide/#dependency-metadata-junit-vintage],
>  so all JUnit4 tests work as is
> # update tests in a few bunches (to not have a huge single PR with a bunch of 
> conflicts)
> # disable (remove dependency) Vintage Engine, so only JUnit5 tests work



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to