如何使用 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")
我正在尝试 运行 来自 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
.
在科特林中
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")