如何使用@csvsource 更改 junit 参数化测试的 csvparsersettings
how to change csvparsersettings of junit parameterized tests using @csvsource
给定一个简单的测试方法,注释为 @ParameterizedTest
,通过注释 @CsvSource
使用输入(例如 @CsvSource({ "@", "*", "#", "?", "-", "$", "!", "0" }
)。当 运行 表示测试时,一旦 "#"
应该被测试,测试就会中断。在阅读 stacktrace/exception 时,我发现了以下内容:
org.junit.jupiter.params.shadow.com.univocity.parsers.common.TextParsingException: java.lang.IllegalArgumentException - Unable to skip 1 lines from line 2. End of input reached
Parser Configuration: CsvParserSettings:
...
CsvFormat:
Comment character=#
Field delimiter=,
Line separator (normalized)=\n
Line separator sequence=\r\n
Quote character='
Quote escape character='
Quote escape escape character=null
我猜问题出在最后一个块中(Comment character=#
): 特定参数正在作为注释读取。如何更改此设置?
您不能更改注释字符。
您 可以 将 #
括在单引号中,如下所示:
@CsvSource({ "@", "*", "'#'", "?", "-", "$", "!", "0" })
但是你实际上不应该对单个字符串使用 @CsvSource
。
相反,只需使用以下内容:
@ValueSource(strings = { "@", "*", "#", "?", "-", "$", "!", "0" })
给定一个简单的测试方法,注释为 @ParameterizedTest
,通过注释 @CsvSource
使用输入(例如 @CsvSource({ "@", "*", "#", "?", "-", "$", "!", "0" }
)。当 运行 表示测试时,一旦 "#"
应该被测试,测试就会中断。在阅读 stacktrace/exception 时,我发现了以下内容:
org.junit.jupiter.params.shadow.com.univocity.parsers.common.TextParsingException: java.lang.IllegalArgumentException - Unable to skip 1 lines from line 2. End of input reached
Parser Configuration: CsvParserSettings:
...
CsvFormat:
Comment character=#
Field delimiter=,
Line separator (normalized)=\n
Line separator sequence=\r\n
Quote character='
Quote escape character='
Quote escape escape character=null
我猜问题出在最后一个块中(Comment character=#
): 特定参数正在作为注释读取。如何更改此设置?
您不能更改注释字符。
您 可以 将 #
括在单引号中,如下所示:
@CsvSource({ "@", "*", "'#'", "?", "-", "$", "!", "0" })
但是你实际上不应该对单个字符串使用 @CsvSource
。
相反,只需使用以下内容:
@ValueSource(strings = { "@", "*", "#", "?", "-", "$", "!", "0" })