如何在JUnit 5中使用String数组进行参数化 [英] How to parameterize with String arrays in JUnit 5
问题描述
我想编写 JUnit 5 参数化测试,它将字符串数组( String []
)作为参数:
I would like to write JUnit 5 parametrized test which takes string array (String[]
) as a parameter:
@ParameterizedTest
@MethodSource("stringArrayProvider")
void parseFirstAndSecondInt(String[] args) {
Arguments arguments = new Arguments(args);
assertEquals(1, arguments.getFirst());
assertEquals(2, arguments.getSecond());
}
我不确定,如何提供集合/流/迭代器字符串数组。我没有成功尝试使用 @MethodSource
注释
I'm not sure, how to provide a collection/stream/iterator of string arrays. I've unsuccessfully tried following approach with @MethodSource
annotation
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;
进行此类参数化测试有什么好的设计/解决方案?
What would be a good design/solution to have such kind of parameterized test?
推荐答案
使用 org中的
包装你的参数: Arguments.of(/)
工厂。 junit.jupiter.params.provider.Arguments
Use the Arguments.of()
factory from org.junit.jupiter.params.provider.Arguments
to wrap your arguments:
static Stream<Arguments> stringArrayProvider() {
return Stream.of(
Arguments.of((Object) new String[]{"1", "2"}),
Arguments.of((Object) new String[]{"1", "2", "3"})
);
}
详见 http://junit.org/junit5/docs/current/user-guide/#writing-tests-parameterized - 测试
这篇关于如何在JUnit 5中使用String数组进行参数化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!