测试todo了解

WebMvcTest

Spring Boot提供了@WebMvcTest声明来加载只包括了需要测试web controller的bean的应用上下文

使用MockMVC进行Controller单元测试

SoanrQube

SoanrQube使用maven进行代码分析

Jenkins、sonarqube、jacoco简单集成管理自动部署、代码质量、单元测试

https://blog.csdn.net/u014752902/article/details/85777779

Sonar

支持多语言项目的扫描,如JAVA/JS/C++/C#/PLSQL。

DBRider

https://github.com/database-rider/database-rider

@SpringBootTest和@WebMvcTest并用?

@WebMvcTest
@SpringBootTest
public class KeywordsControllerWebMockTest

跑一下这个用例,就会得到如下错误:

java.lang.IllegalStateException: Configuration error: 
found multiple declarations of @BootstrapWith for test class

这两个注解分别使用了不同Bootstrap来启动应用的上下文。
@BootstrapWith(WebMvcTestContextBootstrapper.class)
@BootstrapWith(SpringBootTestContextBootstrapper.class)

因此,只能二选一。

@WebMvcTest
1 这个注解仅用于Controller层的单元测试。默认情况下会仅实例化所有的Controller,可以通过指定单个Controller的方式实现对单个Controller的测试。
2 同时,如果被测试的Controller依赖Service的话,需要对该Service进行mock,如使用@MockBean
3 该注解的定义中还包括了@AutoConfigureMockMvc注解,因此,可以直接使用MockMvc对被测controller发起http请求。当然这过程中是不会产生真实的网络流量的。

@SpringBootTest
1 这个注解用于集成测试,也就是默认会加载完整的Spring应用程序并注入所有所需的bean。一般会通过带有@SpringBootApplication的配置类来实现。
2 由于会加载整个应用到Spring容器中,整个启动过程是非常缓慢的(通常10+秒起步),一般会用于集成测试,可以使用TestRestTemplete或者MockMvc来发起请求并验证响应结果。
3 SpringBootTest中的也可以使用Mockito等Mock工具来对某些bean进行mock,但是一般不会只对单个层进行测试,推荐用于单个应用的端到到集成测试。
4 如果涉及到第三方依赖,如数据库、服务间调用、Redis等,可以考虑服务虚拟化方案。

参考文章:
1、https://cloud.tencent.com/developer/article/1755502

猜你喜欢

转载自blog.csdn.net/yangyangrenren/article/details/118075295