ObjectArrayArguments class
ObjectArrayArguments class
我尝试在 JUnit 5 中编写参数化测试
@ParameterizedTest
@ArgumentsSource(TwoParameters.class)
public void test(int a, int b){
//some assert
}
static class TwoParameters implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception {
return Stream.of(
ObjectArrayArguments.create(1, 2),
ObjectArrayArguments.create(3, 4));
}
}
如您所见,有一个带有两个参数的测试函数。
我看到了一种方法 @CsvSource
和这个
我尝试使用上面的方法,但我不能 return 流包含 2 个参数用于测试。
ObjectArrayArguments
无法解析。
如何导入这个class?
我试过 import org.junit.jupiter.params.provider.ObjectArrayArguments;
但它不起作用(Intellij 说 'Cannot resolve symbol ObjectArrayArguments')
ObjectArrayArguments
不是 JUnit 的成员。
您需要提供 Arguments
的流。您可以使用工厂方法 Arguments.of(Object...)
创建这样的实例:
return Stream.of(
Arguments.of(1, 2),
Arguments.of(3, 4)
);
有关详细信息,请阅读 http://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
处的用户指南
这是使用 MethodSource
的摘录:
@ParameterizedTest
@MethodSource("stringIntAndListProvider")
void testWithMultiArgMethodSource(String str, int num, List<String> list) {
assertEquals(3, str.length());
assertTrue(num >=1 && num <=2);
assertEquals(2, list.size());
}
static Stream<Arguments> stringIntAndListProvider() {
return Stream.of(
Arguments.of("foo", 1, Arrays.asList("a", "b")),
Arguments.of("bar", 2, Arrays.asList("x", "y"))
);
}
我尝试在 JUnit 5 中编写参数化测试
@ParameterizedTest
@ArgumentsSource(TwoParameters.class)
public void test(int a, int b){
//some assert
}
static class TwoParameters implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception {
return Stream.of(
ObjectArrayArguments.create(1, 2),
ObjectArrayArguments.create(3, 4));
}
}
如您所见,有一个带有两个参数的测试函数。
我看到了一种方法 @CsvSource
和这个
我尝试使用上面的方法,但我不能 return 流包含 2 个参数用于测试。
ObjectArrayArguments
无法解析。
如何导入这个class?
我试过 import org.junit.jupiter.params.provider.ObjectArrayArguments;
但它不起作用(Intellij 说 'Cannot resolve symbol ObjectArrayArguments')
ObjectArrayArguments
不是 JUnit 的成员。
您需要提供 Arguments
的流。您可以使用工厂方法 Arguments.of(Object...)
创建这样的实例:
return Stream.of(
Arguments.of(1, 2),
Arguments.of(3, 4)
);
有关详细信息,请阅读 http://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized-tests
处的用户指南这是使用 MethodSource
的摘录:
@ParameterizedTest
@MethodSource("stringIntAndListProvider")
void testWithMultiArgMethodSource(String str, int num, List<String> list) {
assertEquals(3, str.length());
assertTrue(num >=1 && num <=2);
assertEquals(2, list.size());
}
static Stream<Arguments> stringIntAndListProvider() {
return Stream.of(
Arguments.of("foo", 1, Arrays.asList("a", "b")),
Arguments.of("bar", 2, Arrays.asList("x", "y"))
);
}