Spring Boot 单元测试(二)参数化测试

Spring Boot 使用 JUnit5 提供的@ParameterizedTest注解实现参数化测试,同时要配合其它注解完成参数源配置。

一、自定义测试执行名称

@ParameterizedTest默认的测试执行名称格式为[序号]参数1=XXX, 参数2=YYY...,可以通过修改name属性自定义测试执行名称。

@ParameterizedTest(name = "第 {index} 次测试,参数:{0}")
@ValueSource(ints = { 1, 10, 100 })
public void test(int value) {
    Assertions.assertTrue(value < 100);
}
复制代码

测试执行名称为:

第 1 次测试,参数:1
第 2 次测试,参数:10
第 3 次测试,参数:100
复制代码

如果参数有多个,则依次为:{0}{1}{2}...

二、参数数据源

1. @ValueSource

@ValueSource数据源支持以下类型的数组:

  • short
  • byte
  • int
  • long
  • float
  • double
  • char
  • java.lang.String
  • java.lang.Class

int类型为例,以下方法会测试 3 次,第 3 次参数为 100 时测试结果为 Fail。

@ParameterizedTest
@ValueSource(ints = { 1, 10, 100 })
public void test(int value) {
    Assertions.assertTrue(value < 100);
}
复制代码

2. @NullSource

在使用字符串作为入参时,有时可能会用到null,不能直接将null写入@ValueSource注解的strings数组中(编译器会报错)。

@ValueSource(strings = { null, "X", "Y", "Z" })
复制代码

正确的方法是使用@NullSource注解。

@ParameterizedTest
@NullSource
@ValueSource(strings = { "X", "Y", "Z" })
public void test(String value) {
    System.out.println("Param: " + value);
}
复制代码

3. @EmptySource

@NullSource类似,使用字符串作为入参时如果需要使用空字符串,可以使用@EmptySource

@ParameterizedTest
@EmptySource
@ValueSource(strings = { "X", "Y", "Z" })
public void test(String value) {
    System.out.println("Param: " + value);
}
复制代码

@NullSource不同的是,可以直接在@ValueSource注解的strings数组中写空字符串参数,编译器不会报错。

@ValueSource(strings = { "", "X", "Y", "Z" })
复制代码

4. 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值