Class<?>[] 类 是什么意思请举个例子

What is mean Class<?>[] classes and Please give me some example

我不知道如何使用 JUnit 5 @ValueSource 的属性,例如 Class<?>[] 类。

https://junit.org/junit5/docs/current/api/org/junit/jupiter/params/provider/ValueSource.html#classes()

@ParameterizedTest
@ValueSource(classes = { })
public void testWithValueSource3(UserInfo argument) {
    assertTrue(argument.getName().equals("Alice"));
}

这里怎么写?

"classes = { }"

JUnit 5 User Guide 显示了使用 @ValueSourceint 个参数的示例。

@ParameterizedTest
@ValueSource(ints = { 1, 2, 3 })
void testWithValueSource(int argument) {
    assertTrue(argument > 0 && argument < 4);
}

您将对 classes 元素执行相同的操作,除了您将使用 Class<?> 参数而不是使用 int 参数。请注意,您可能可以使用 Class<? extends SomeType> 作为参数类型,但没有类型安全(即 you 必须确保注释仅使用 classes of那种类型)。

@ParameterizedTest
@ValueSource(classes = { Object.class, String.class, List.class })
void testWithValueSource(Class<?> argument) {
    // assert something...
}

但是,在你的问题中,你的测试方法接受一个 UserInfo 参数(一个实例,而不是它的 class),它不能使用 @ValueSource 配置。 @MethodSource is probably what you want to use (see user guide).

@ParameterizedTest
@MethodSource("userInfoProvider")
void testUserInfo(UserInfo argument) {
    // assert something...
}

/*
 * Doesn't necessarily have to be static or return a Stream. Read
 * the documentation to know when the method must be static and
 * what other return types are possible.
 */
static Stream<UserInfo> userInfoProvider() {
    return Stream.of(
        new UserInfo(...),
        new UserInfo(...),
        new UserInfo(...),
        // and so on...
    );
}