@CsvFileSource is a repeatable
ArgumentsSource which is used to load comma-separated value (CSV)
files from one or more classpath resources or files.
The CSV records parsed from these resources and files will be provided as
arguments to the annotated
@ParameterizedClass or
@ParameterizedTest. Note
that the first record may optionally be used to supply CSV headers (see
useHeadersInDisplayName).
Any line beginning with a commentCharacter
will be interpreted as a comment and will be ignored.
The column delimiter (which defaults to a comma (,)) can be customized
via either delimiter or delimiterString.
The line separator is detected automatically, meaning that any of
"\r", "\n", or "\r\n" is treated as a line separator.
In contrast to the default syntax used in @CsvSource, @CsvFileSource
uses a double quote (") as its quote character by default, but this can
be changed via quoteCharacter. An empty, quoted value ("")
results in an empty String unless the emptyValue attribute is
set; whereas, an entirely empty value is interpreted as a null
reference. By specifying one or more nullValues a custom value can be
interpreted as a null reference (see the User Guide for an example). An
ArgumentConversionException is thrown if the target type of a null
reference is a primitive type.
Note
An unquoted empty value will always be converted to a
null reference regardless of any custom values configured via the
nullValues attribute.
Except within a quoted string, leading and trailing whitespace in a CSV
column is trimmed by default. This behavior can be changed by setting the
ignoreLeadingAndTrailingWhitespace attribute to true.
Note that delimiter (or delimiterString),
quoteCharacter, and commentCharacter are treated as
control characters and must all be distinct.
This annotation is inherited to subclasses.
CsvSource, org.junit.jupiter.params.provider.ArgumentsSource , org.junit.jupiter.params.ParameterizedClass , org.junit.jupiter.params.ParameterizedTest
| Modifier and Type | Method and Description |
|---|---|
| public char | |
| public char | |
| public String | |
| public String | |
| public String | |
| public String[] | |
| public boolean | ignoreLeadingAndTrailingWhitespace()
Controls whether leading and trailing whitespace characters of unquoted CSV columns should be ignored. |
| public int | |
| public String[] | |
| public int | |
| public char | |
| public String[] | |
| public boolean | useHeadersInDisplayName()
Configures whether the first CSV record should be treated as header names for columns. |
| commentCharacter | back to summary |
|---|---|
| public char commentCharacter() The character used to denote comments when reading the CSV files. Any line that begins with this character will be treated as a comment and ignored during parsing. Note that there is one exception to this rule: if the comment character appears within a quoted field, it loses its special meaning. The comment character must be the first character on the line without any leading whitespace. Defaults to
| |
| delimiter | back to summary |
|---|---|
| public char delimiter() The column delimiter character to use when reading the CSV files. This is an alternative to Defaults implicitly to | |
| delimiterString | back to summary |
|---|---|
| public String delimiterString() The column delimiter string to use when reading the CSV files. This is an alternative to Defaults implicitly to
| |
| emptyValue | back to summary |
|---|---|
| public String emptyValue() The empty value to use when reading the CSV files. This value replaces quoted empty strings read from the input. Defaults to
| |
| encoding | back to summary |
|---|---|
| public String encoding() The encoding to use when reading the CSV files; must be a valid charset. Defaults to
| |
| files | back to summary |
|---|---|
| public String[] files() The CSV files to use as the sources of arguments; must not be empty
unless | |
| ignoreLeadingAndTrailingWhitespace | back to summary |
|---|---|
| public boolean ignoreLeadingAndTrailingWhitespace() Controls whether leading and trailing whitespace characters of unquoted CSV columns should be ignored. Whitespace refers to characters with Unicode code points less than
or equal to Defaults to | |
| maxCharsPerColumn | back to summary |
|---|---|
| public int maxCharsPerColumn() The maximum number of characters allowed per CSV column. Must be a positive number or Defaults to | |
| nullValues | back to summary |
|---|---|
| public String[] nullValues() A list of strings that should be interpreted as For example, you may wish for certain values such as Please note that unquoted empty values will always be converted
to Defaults to
| |
| numLinesToSkip | back to summary |
|---|---|
| public int numLinesToSkip() The number of lines to skip when reading the CSV files. Typically used to skip header lines. Defaults to
| |
| quoteCharacter | back to summary |
|---|---|
| public char quoteCharacter() The quote character to use for quoted strings. Defaults to a double quote ( You may change the quote character to anything that makes sense for your use case. | |
| resources | back to summary |
|---|---|
| public String[] resources() The CSV classpath resources to use as the sources of arguments; must not
be empty unless | |
| useHeadersInDisplayName | back to summary |
|---|---|
| public boolean useHeadersInDisplayName() Configures whether the first CSV record should be treated as header names for columns. When set to Defaults to Example
@ParameterizedTest(name = "[{index}] {arguments}")
@CsvFileSource(resources = "fruits.csv", useHeadersInDisplayName = true)
void test(String fruit, int rank) {
// ...
}
| |