Class<?>[] 类 是什么意思请举个例子
What is mean Class<?>[] classes and Please give me some example
我不知道如何使用 JUnit 5 @ValueSource
的属性,例如 Class<?>[]
类。
@ParameterizedTest
@ValueSource(classes = { })
public void testWithValueSource3(UserInfo argument) {
assertTrue(argument.getName().equals("Alice"));
}
这里怎么写?
"classes = { }"
JUnit 5 User Guide 显示了使用 @ValueSource
和 int
个参数的示例。
@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...
);
}
我不知道如何使用 JUnit 5 @ValueSource
的属性,例如 Class<?>[]
类。
@ParameterizedTest
@ValueSource(classes = { })
public void testWithValueSource3(UserInfo argument) {
assertTrue(argument.getName().equals("Alice"));
}
这里怎么写?
"classes = { }"
JUnit 5 User Guide 显示了使用 @ValueSource
和 int
个参数的示例。
@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...
);
}