单元测试——使用@ParameterizedTest和@CsvFileSource执行csv文件批量运行测试数据
我们在写单元测试的时候,往往会一个测试用例,多条测试数据来覆盖各种情况,遇到这种情况我们会怎么做呢
一开始可能会想到多写几遍测试用例,更改数据,一次性执行(遇到条件多的就完了)
或者执行一次测试,改一次数据,多次执行测试(遇到单次执行时间长的,只能慢慢等了)
显然上面两种都不是好方法,这时候我们就想到把数据存起来,依次执行
Junit给我们提供两个注解@ParameterizedTest和@CsvFileSource,两个注解一起用就可以操作csv文件,话不多说,上代码
先导一个依赖
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
然后写一个测试
@ParameterizedTest
// resources:指定csv文件的位置
// numLinesToSkip:指定从第n行开始执行
@CsvFileSource(resources = "/two-column.csv", numLinesToSkip = 1)
void testWithCsvFileSource(String first, int second) {
assertNotNull(first);
assertNotEquals(0, second);
}
创建csv文件
Country, reference
Sweden, 1
Poland, 2
"United States of America", 3
最后开始测试就行
测试结果