前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@SpringBootTest和@WebMvcTest并用?

@SpringBootTest和@WebMvcTest并用?

作者头像
Antony
发布2020-12-02 10:22:57
1.5K0
发布2020-12-02 10:22:57
举报

以下这个用例能跑起来么?

代码语言:javascript
复制
@WebMvcTest
@SpringBootTest
public class KeywordsControllerWebMockTest

答案很简单,特朗普和拜登可以和谐共处么?

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

代码语言:javascript
复制
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等,可以考虑服务虚拟化方案。

By 软件测试--那些事

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • @WebMvcTest
    • @SpringBootTest
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档