hooyantsing's Blog

青铜篇_P16_使用Mockito完成Mock测试

字数统计: 290阅读时长: 1 min
2020/07/15

使用Mockito完成Mock测试

20年全新-Spring Boot 2.x从青铜到王者之青铜篇-打造精品中的精品-程序员-编程-架构师-SpringBoot

应用场景:假设你的同事负责Service层(服务层)还没实现,而你已经做好了Cotroller层(服务层),需要测试。此时可以使用Mock模拟。

@MockBean

注入一个假的Bean

例:

articleService.java

1
2
3
public interface ArticleService {
public String saveArticle (Article article);
}

Service层创建接口,然后再实现此接口,此方式更规范。

在 Test 类里使用。

1
2
@MockBean
private ArticleService articleService;

“打桩” 也就是设置条件的行为。

1
2
3
// 打桩
// 意思是:当 调用articleService对象里的saveArticle方法时,不调用里面的代码逻辑,而直接返回ok字符串。
when(articleService.saveArticle(articleObj)).thenReturn("ok");

轻量级Mock测试

@SpringBootTest 替换成 @WebMvcTest

@SpringBootTest 是尝试着将所有的Bean都注入到容器里,例如带有 @Cotroller 和 @Service 等待。

@WebMvcTest

value 需要注入的Bean

只注入设定的Bean

1
2
//假设只对 ArticleController 进行测试。
@WebMvcTest(ArticleController.class)

由于不需要注入无关的Bean,因此测试启动速度会有所提升。

MockMvc相关的API

496c68df33b3d7f44b65eb6051a7418a.png

CATALOG
  1. 1. 使用Mockito完成Mock测试
    1. 1.0.1. @MockBean
  2. 1.1. 轻量级Mock测试
    1. 1.1.1. @WebMvcTest
  3. 1.2. MockMvc相关的API