小编Mak*_*kko的帖子

Function<T, R> 作为 Junit 5 中的附加参数

我试图将测试参数传递给 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)

java junit

3
推荐指数
1
解决办法
1486
查看次数

标签 统计

java ×1

junit ×1