You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Alexey Zotov (Jira)" <ji...@apache.org> on 2021/05/02 13:41:00 UTC

[jira] [Commented] (CASSANDRA-16630) Migrate to JUnit5

    [ https://issues.apache.org/jira/browse/CASSANDRA-16630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17338014#comment-17338014 ] 

Alexey Zotov commented on CASSANDRA-16630:
------------------------------------------

[~mck] [~benedict]
Thanks for bringing me back to the reality of the current project state. Even though it is a bit frustrating to be unable to make cleanups and improvements that are not related to a particular feature development, I completely understand and admit your concerns. 

It would be nice to come up with a new strategy on how we can maintain the existing code (I'm talking not only about new style approaches, but also about simple code cleanups) because the current one seems to be a kind of a stopper for faster project development and evolving. In fact, I am not really sure what could help here (I don't have a deep understanding of the current processes), moreover, it is out of the scope for this particular discussion. I'll keep it in mind and jump in if some ideas appear.

----

Now here is a question on the matter. I can see that {{cql-test-some}} and {{cql-test}} targets (unlikely to the other) use {{junit}} instead of {{junit-timeout}} (which has a support of {{jstack}} on timeout). Are there any particular reasons for that? Or is it just a potential point for improvement?


> 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
>            Assignee: Alexey Zotov
>            Priority: Low
>
> 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
> # update {{JStackJUnitTask}}
> # update formatters
> # create a separate ticket to migrate to {{ant-junitlauncher-1.10.11}} (once it is released) and simplify {{JStackJUnitTask}} after https://github.com/apache/ant/pull/147
> 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 numerous 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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org