Grz*_*rek 0 java parameterized-unit-test kotlin junit5
我想用三个参数来参数我JUnit5测试:string,string和list<string>。
到目前为止,使用时没有运气@CsvSource,这是为我的用例传递参数的最便捷方法:
没有隐式转换将类型java.lang.String的对象转换为类型java.util.List
实际测试是:
@ParameterizedTest()
@CsvSource(
"2,1"
)
fun shouldGetDataBit(first: Int, second: String, third: List<String>) {
...
}
Run Code Online (Sandbox Code Playgroud)
知道这是否可行吗?我在这里使用Kotlin,但这应该无关紧要。
没有必要根据StefanE的建议使用黑客手段。
在这一点上,我很确定Junit5测试参数除基本类型外不支持任何其他内容,而CsvSource仅支持一种允许混合类型。
实际上,JUnit Jupiter支持任何类型的参数。只是@CsvSource限于几种原始类型和String。
因此@CsvSource,应该使用a 代替使用a @MethodSource。
@ParameterizedTest
@MethodSource("generateData")
void shouldGetDataBit(int first, String second, List<String> third) {
System.out.println(first);
System.out.println(second);
System.out.println(third);
}
static Stream<Arguments> generateData() {
return Stream.of(
Arguments.of(1, "foo", Arrays.asList("a", "b", "c")),
Arguments.of(2, "bar", Arrays.asList("x", "y", "z"))
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |