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

Matt Sicker commented on LOG4J2-2653:
-------------------------------------

So far, I've also ported a couple of the important JUnit rules to Jupiter 
extensions. LoggerContextRule has mostly been ported to equivalent Jupiter 
APIs, and now you can use some pseudo-dependency injection in unit tests (at 
least for LoggerContext, Configuration, and Appender so far) which is a limited 
form of what is possible in LOG4J2-2803 (but will integrate fairly easily). 
There are some other rules written that are more difficult to port that have 
limited use, so we'll see how important they are to port down the line. For 
now, I'm trying to use fairly limited package visibility for the extension code 
so that downstream code can still use it without modifying it, though we can 
easily make those extensions public to allow other code to extend it like with 
the JUnit 4 stuff.

> Migrate to JUnit 5
> ------------------
>
>                 Key: LOG4J2-2653
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-2653
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Tests
>    Affects Versions: 3.0.0
>            Reporter: Matt Sicker
>            Assignee: Matt Sicker
>            Priority: Major
>             Fix For: 3.0.0, 2.14.0
>
>
> JUnit 5 has a ton of neat features that make writing tests easier and more 
> expressive. It provides a compatibility layer for JUnit 4 and 3, so we should 
> be able to migrate pretty easily there.
> In order to migrate v4 tests to v5, we'll need to support the following:
> * LoggerContextRule should have an equivalent ParameterResolver 
> [extension|https://junit.org/junit5/docs/current/user-guide/#extensions] 
> which injects a LoggerContext parameter among other types. (This class should 
> remain for JUnit 4 users, and an abstraction might help in making something 
> equivalent available for JMH tests as well).
> * Test categories should be converted to 
> [tags|https://junit.org/junit5/docs/current/user-guide/#writing-tests-tagging-and-filtering].
> * {{@Ignore}} should be replaced with {{@Disabled}} or appropriate 
> conditional disabled annotations (also useful for replacing assumeThat() 
> tests).
> * Hamcrest must be added as an explicit dependency and/or replaced by 
> something better like AssertJ.
> * The other test annotations need to be updated to the new ones.
> * Parameterized tests can use the new parameters annotations to simplify 
> things a lot.
> * TemporaryFolder rule can be replaced with {{@TempDir}} parameter injection 
> (experimental feature).
> * Other rule usage needs to be converted to use appropriate v5 features or 
> turned into extensions.
> Note that this upgrade should be backported to the release-2.x branch after 
> Java 8 is made the baseline there.



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

Reply via email to