javajunit5parameterized-tests

how to change csvparsersettings of junit parameterized tests using @csvsource


Given a simple test-method, annotated as @ParameterizedTest, employing input via Annotation @CsvSource (e.g.@CsvSource({ "@", "*", "#", "?", "-", "$", "!", "0" }). When running said test, the test interrupts as soon as "#" is supposed to be tested. When reading through the stacktrace/exception, I found the following:

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

I guess the problem is in the last block (Comment character=#): The specific parameter is being read as comment. How do I change this setting?


Solution

  • You cannot change the comment character.

    You could wrap the # in single quotes like this:

    @CsvSource({ "@", "*", "'#'", "?", "-", "$", "!", "0" })

    But you actually shouldn't be using @CsvSource for single strings anyway.

    Instead, simply use the following:

    @ValueSource(strings = { "@", "*", "#", "?", "-", "$", "!", "0" })