在 JUnit 5 木星中使用两个参数的参数化测试
2022-09-01 00:55:14
如何在JUnit 5 jupiter中编写具有两个参数的参数化测试?以下情况不起作用(编译错误):
@ParameterizedTest
@ValueSource(strings = { "a", "b", "foo" })
@ValueSource(ints = { 1, 2, 3 })
public void test(String arg1, int arg2) {...}
如何在JUnit 5 jupiter中编写具有两个参数的参数化测试?以下情况不起作用(编译错误):
@ParameterizedTest
@ValueSource(strings = { "a", "b", "foo" })
@ValueSource(ints = { 1, 2, 3 })
public void test(String arg1, int arg2) {...}
以下是实现这些多参数测试方法调用的两种可能性。
第一个(testParameters)使用 CsvSource,您向其提供逗号分隔的列表(分隔符是可配置的),并且类型转换自动完成到测试方法参数。
第二个(testParametersFromMethod)使用一种方法(提供参数)来提供所需的数据。
@ParameterizedTest
@CsvSource({"a,1", "b,2", "foo,3"})
public void testParameters(String name, int value) {
System.out.println("csv data " + name + " value " + value);
}
@ParameterizedTest
@MethodSource("provideParameters")
public void testParametersFromMethod(String name, int value) {
System.out.println("method data " + name + " value " + value);
}
private static Stream<Arguments> provideParameters() {
return Stream.of(
Arguments.of("a", 1),
Arguments.of("b", 2),
Arguments.of("foo", 3)
);
}
这些测试方法的输出是:
Running ParameterTest
csv data a value 1
csv data b value 2
csv data foo value 3
method data a value 1
method data b value 2
method data foo value 3