Looking at the referenced open issue on Junit5 side, it seems like at least
the community is actively working on a @ParameterizedContainer solution. In
that case I would +1 for option 2, since we have an easy path for moving to
the official class-level annotation when that is ready.

-Jack

On Thu, Dec 7, 2023 at 8:27 AM Jean-Baptiste Onofré <j...@nanthrax.net> wrote:

> Hi Ed,
>
> I like option 2, it simplifies the parameterized support.
>
> Just my $0.01
>
> Regards
> JB
>
> On Thu, Dec 7, 2023 at 5:16 PM Eduard Tudenhoefner <
> etudenhoef...@apache.org> wrote:
>
>> Hey everyone,
>>
>> a while ago we (thanks to many contributors that helped here) started
>> migrating tests from JUnit4 to JUnit5. While most things are
>> straightforward to migrate, parameterized tests are not.
>>
>> JUnit5 doesn't support parameterization at the class level yet
>> <https://github.com/junit-team/junit5/issues/878>, which makes it
>> difficult to migrate existing parameterized tests to JUnit5.
>>
>> There are a few possible options and I'd like to see what the community
>> thinks here:
>>
>> 1) When migrating to JUnit5, parameterized testing is moved to every test
>> method, meaning that every test method would have a *@ParameterizedTest*
>> and a *@ValueSource/@MethodSource *annotation.
>>
>> This is the official JUnit5 approach that is recommended. However, it is
>> quite repetitive, as every single test method now needs to define its own
>> parameters.
>> One example of this approach can be seen in #9185
>> <https://github.com/apache/iceberg/pull/9185>, where *TestFlinkScan* is
>> migrated to JUnit5.
>>
>> 2) We could introduce a similar approach that the Flink community did
>> with https://issues.apache.org/jira/browse/FLINK-25315 /
>> apache/flink#20145 <https://github.com/apache/flink/pull/20145>.
>> This would introduce a custom *ParameterizedTestExtension* with two
>> additional *@Parameter / **@Parameters* annotations to mimic the same
>> behavior that JUnit4 provided.
>> One example of this approach can be seen in #9161
>> <https://github.com/apache/iceberg/pull/9161>, where
>> *TestDictionaryRowGroupFilter* is migrated to use this way of
>> parameterized testing.
>>
>> I guess another option would be to wait until this is properly supported
>> by JUnit5, but it is unclear when that will be.
>>
>>
>> Eduard
>>
>>
>>
>>

Reply via email to