首页 > 其他分享 >优雅地在springboot进行测试

优雅地在springboot进行测试

时间:2022-12-24 00:33:06浏览次数:37  
标签:Web springboot Spring 优雅 测试 spring 注解 加载

简述

  在springboot项目中使用单元测试十分简单,引入核心依赖 spring-boot-starter-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功能

@Runwith注解

  在spring项目中,会使用@Runwith注解进行测试,@Runwith就是一个运行器

  @RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环 境,以便在测试开始的时候自动创建Spring的应用上下文

  @RunWith(SpringRunner.class),它继承了@RunWith(SpringJUnit4ClassRunner.class) ,用法相同,名字简短而已

@SpringBootTest

  SpringBoot用 @SpringBootTest 注解替代了 spring-test 中的 @ContextConfiguration 注解,该注解可以创建 ApplicationContext,而且还添加了一些其他注解来测试特定的应用

  使用 @SpringBootTest 的 WebEnvironment 属性来修改测试的运行方式

MOCK 加载 Web 应用程序上下文并提供模拟的 Web 环境。该注解不会启动嵌入的服务器,可以结合@AutoConfigureMockMvc 和 @AutoConfigureWebTest-Client 注解使用
RANDOM_PORT 加载 WebServerApplicationContext 并提供真实的 Web环境,嵌入的服务器启动后可以监听随机端口
DEFINED_PORT 加载 WebServerApplicationContext 并提供真实的 Web 环境,嵌入的服务器启动后可以监听特定的端口。特定的端口可以从 application.properties 获取,也可以设置为默认的 8080 端口
NONE 使用 SpringApplication 加载 ApplicationContext,但不提供任何 Web 环境

  classes属性可以用来指定特定需要加载的类

@DataJpaTest

  对于JPA,Repository进行测试的时候可以使用@DataJpaTest 注解,有了这个注解,Spring在启动的时候就只会加载@Repository 相关的class,这样能提高测试的效率

@WebMvcTest

  测试WEB层可以使用@WebMvcTest 注解,使用此注解可以测试controller部分并且不用把整个服务都跑起来

References

https://www.cnblogs.com/myitnews/p/12330297.html

https://blog.csdn.net/weixin_43899069/article/details/118107179

 

 

 

 

 

 

标签:Web,springboot,Spring,优雅,测试,spring,注解,加载
From: https://www.cnblogs.com/CNLayton/p/17001881.html

相关文章