正确的参数化测试 class 在 JUnit 5 中失败

Correcty parameterized test class fails in JUnit 5

我对使用 JUnit 5 进行单元测试有疑问, 也就是说,当我 运行 测试带有参数化注释的方法时,它失败了,但我认为一切都是正确的。它是 JUnit 5 代码:

@Test
@ParameterizedTest
@MethodSource("data")
public void test(int e){
    System.out.println("e = " + e);
}

private static Stream data(){
    return Stream.of(
        Arguments.of(1),
        Arguments.of(2)
    );
}

它失败了:

,我尝试了自定义参数化解析器,但出现了另一个错误:它没有 return 从 data() 函数传递值,而是 return 中定义的默认值 resolveParameter( ) CustomParameterResolver class 中的函数。如何解决这个问题?

使用 @ParameterizedTest 时不需要 @Test,因为这会导致额外执行测试。此额外执行需要将 int 传递给测试,但没有用于此的解析器,因此测试失败并出现您发布的异常。

@ParameterizedTest
@MethodSource("data")
public void test(int e){
    System.out.println("e = " + e);
}

private static Stream data(){
    return Stream.of(
        Arguments.of(1),
        Arguments.of(2)
    );
}