我试图将测试参数传递给 JUnit 5,其中包括 Java 的Function<T, R>接口类型,如以下代码片段所示。我收到“Lambda 转换的目标类型必须是接口”错误,因为 JUnit 5 的Arguments类型使用对象数组来存储参数。
@ParameterizedTest(name = "Test description: {0}")
@MethodSource("generateArguments")
void passFunctionAsAnArgumentTest(final String description, final Function<String, String> testMethod) {
// Fetch initial preactivation value.
final String result = testMethod.apply("input");
assertThat(result, is("expected"));
}
private static Stream<Arguments> generateArguments() {
return Stream.of(
// Error: "Target type of a lambda conversion must be an interface".
Arguments.of("Return 'expected' if argument is 'input'", (String input) -> generateStringFromInput(input))
);
}
private static String generateStringFromInput(final String input) { …Run Code Online (Sandbox Code Playgroud)