我想编写一个JUnit 5参数化测试,它将字符串数组 (String[]
) 作为参数:
我想编写一个JUnit 5参数化测试,它将字符串数组 (String[]
) 作为参数:
@ParameterizedTest
@MethodSource("stringArrayProvider")
void parseFirstAndSecondInt(String[] args) {
Arguments arguments = new Arguments(args);
assertEquals(1, arguments.getFirst());
assertEquals(2, arguments.getSecond());
}
我不确定如何提供一个字符串数组的集合/流/迭代器。我曾尝试使用@MethodSource
注释,但没有成功。
static Stream<String[]> stringArrayProvider() {
return Stream.of(
new String[]{"1", "2"},
new String[]{"1", "2", "3"});
}
但我收到了这个异常:
org.junit.jupiter.params.converter.ArgumentConversionException:
No implicit conversion to convert object of type java.lang.String to type [Ljava.lang.String;
有什么好的设计/解决方案可以实现这种参数化测试?
Object
看起来有点奇怪。 - Vít KotačkaList.of((Object) new String[]{"1", "2"})
与List.of(new String[]{"1", "2"})
并不相等,就像使用List.of()
一样。 - Sormuras