如何使用@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" })