@CsvSource
与文本块一起使用真的很棒!与validation files类似,它可用于创建易于阅读的测试,并并排放置。
例如:
@ParameterizedTest
@CsvSource(delimiterString = "->", textBlock = """
ABC -> abc
Abc -> abc
""")
void toLowercase(String input, String expected) {
assertThat(input.toLowerCase())
.isEqualTo(expected);
}
最近让我感到困惑的是以下错误:
org.junit.jupiter.api.extension.ParameterResolutionException:
No ParameterResolver registered for parameter [java.lang.String arg1] in method [void MyTest.test(java.lang.String,java.lang.String)].
出来的是,它是由一个以单Quote '
开头的参数值引起的,该值在值结束时并未由另一个'
关闭。在我的情况下,罪魁祸首是'S-GRAVENHAGE
,是比利时街头的名字。
解决方案是将参数quoteCharacter
设置为double quote "
,前提是我们使用 text块。这样,我们可以使用""
测试空字符串。
示例:
@ParameterizedTest
@CsvSource(quoteCharacter = '\"', delimiterString = "->", textBlock = """
'S-GRAVENHAGE -> 's-gravenhage
"" -> ""
""")
void toLowercase(String input, String expected) {
assertThat(input.toLowerCase())
.isEqualTo(expected);
}
我希望它有帮助,欢呼!