springboottest版本号_SpringBoot Test及注解详解

一、Spring Boot Test介绍

Spring Test与JUnit等其他测试框架结合起来,提供了便捷高效的测试手段。而Spring Boot Test 是在Spring Test之上的再次封装,增加了切片测试,增强了mock能力。

整体上,Spring Boot Test支持的测试种类,大致可以分为如下三类:

单元测试:一般面向方法,编写一般业务代码时,测试成本较大。涉及到的注解有@Test。

切片测试:一般面向难于测试的边界功能,介于单元测试和功能测试之间。涉及到的注解有@RunWith @WebMvcTest等。

功能测试:一般面向某个完整的业务功能,同时也可以使用切面测试中的mock能力,推荐使用。涉及到的注解有@RunWith @SpringBootTest等。

功能测试过程中的几个关键要素及支撑方式如下:

测试运行环境:通过@RunWith 和 @SpringBootTest启动spring容器。

mock能力:Mockito提供了强大mock功能。

断言能力:AssertJ、Hamcrest、JsonPath提供了强大的断言能力。

二、快速开始

增加spring-boot-starter-test依赖,使用@RunWith和@SpringBootTest注解,即可开始测试。

添加依赖

org.springframework.boot

spring-boot-starter-test

test

一旦依赖了spring-boot-starter-test,下面这些类库将被一同依赖进去:

JUnit:java测试事实上的标准,默认依赖版本是4.12(JUnit5和JUnit4差别比较大,集成方式有不同)。

Spring Test & Spring Boot Test:Spring的测试支持。

AssertJ:提供了流式的断言方式。

Hamcrest:提供了丰富的matcher。

Mockito:mock框架,可以按类型创建mock对象,可以根据方法参数指定特定的响应,也支持对于mock调用过程的断言。

JSONassert:为JSON提供了断言功能。

JsonPath:为JSON提供了XPATH功能。

1. 单元测试

@RunWith(SpringRunner.class)

@SpringBootTestpublic classSpringBootApplicationTests {

@AutowiredprivateUserService userService;

@Testpublic voidtestAddUser() {

User user= newUser();

user.setName("john");

user.setAddress("earth");

userService.add(user);

}

}

@RunWith是Junit4提供的注解,将Spring和Junit链接了起来。假如使用Junit5,不再需要使用@ExtendWith注解,@SpringBootTest和其它@*Test默认已经包含了该注解。

@SpringBootTest替代了spring-test中的@ContextConfiguration注解,目的是加载ApplicationContext,启动spring容器。

使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找被@SpringBootApplication或@SpringBootConfiguration注解的类。

2. 功能测试

一般情况下,使用@SpringBootTest后,Spring将加载所有被管理的bean,基本等同于启动了整个服务,此时便可以开始功能测试。

由于web服务是最常见的服务,且我们对于web服务的测试有一些特殊的期望&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值