¿Cómo pasar una list como parámetro de testing parametrizado de JUnit5?

Quiero parametrizar mis testings JUnit5 usando tres parameters: string , string y list<string> .

Sin suerte hasta ahora cuando @CsvSource , que es la manera más conveniente de pasar los parameters para mi caso de uso:

No hay conversión implícita para convertir el object de tipo java.lang.String para escribir java.util.List

La testing real es:

 @ParameterizedTest() @CsvSource( "2,1" ) fun shouldGetDataBit(first: Int, second: String, third: List<String>) { ... } 

Alguna idea si esto es posible? Estoy usando Kotlin aquí, pero debería ser irrelevante.

    No hay ninguna razón para usar un truco como lo sugiere StefanE.

    En este punto, estoy bastante seguro de que Junit5 Test Parameters no admite nada más que types primitivos y CsvSource solo uno que permite la mezcla de los types.

    En realidad, JUnit Jupiter admite parameters de cualquier tipo. Es solo que @CsvSource está limitado a unos pocos types primitivos y String .

    Por lo tanto, en lugar de usar @CsvSource , debe usar @MethodSource siguiente manera.

     @ParameterizedTest @MethodSource("generateData") void shouldGetDataBit(int first, String second, List<String> third) { System.out.println(first); System.out.println(second); System.out.println(third); } static Stream<Arguments> generateData() { return Stream.of( Arguments.of(1, "foo", Arrays.asList("a", "b", "c")), Arguments.of(2, "bar", Arrays.asList("x", "y", "z")) ); } 

    Proporcione el tercer elemento como una cadena separada por comas y divida la cadena en una list dentro de la testing.

    En este punto, estoy bastante seguro de que Junit5 Test Parameters no admite nada más que types primitivos y CsvSource solo uno que permite la mezcla de los types.