如何使用 JUnit 5 参数化测试 CSV 文件源?

How to use JUnit5 Parametrized Test CSV file source?

我正在尝试 运行 来自 CSV 文件的参数化测试。

如果我像这样只使用 CSVSource,它就可以工作:

@ParameterizedTest
@CsvSource({ "a,A", "b,B" })
void csvSourceTest(String input, String expected) {
    String actualValue = input.toUpperCase();
    assertEquals(expected, actualValue);
}

但是如果我从一个文件中尝试同样的事情,它将不起作用:

@ParameterizedTest
@CsvFileSource(resources = "/data.csv")
void csvFileSourceTest(String input, String expected) {
    String actualValue = input.toUpperCase();
    assertEquals(expected, actualValue);
}

我也尝试过使用硬路径访问我的文件,但是对于 Eclipse 中的文件测试,我总是收到消息

No tests found with test runnter 'JUnit 5'.

JUnit 期望文件在哪里?

这些是我的依赖项:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.1.0</version>
    <scope>test</scope>
</dependency>

有谁知道我可能遗漏了什么或错误在哪里?

提前致谢
保罗

JUnit5 user guide 声明 CSV 文件需要位于类路径中。如果是 src/test/resources.

的 Maven 项目

在科特林中

CSV 文件放在这里:

/src/test/resources/post_data.csv

测试读取csv测试数据:

        @ParameterizedTest(name = "{index} => post with {0} : {1} : {2}")
        @CsvFileSource(resources = ["/post_data.csv"],)
        fun testPostWithValidData(id: String?, text: String?, completed: String?) {
          //test body
          ......

        }

Gradle 依赖关系:

// JUnit5 testImplementation("org.junit.jupiter:junit-jupiter-api:$junitVersion") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$junitVersion") testImplementation("org.junit.jupiter:junit-jupiter-params:$junitVersion") testRuntimeOnly("org.junit.jupiter:junit-jupiter-params:$junitVersion")