Mock使用

简介: SpringBoot/SpringMvc使用Mock/MockBean 做单元测试

Mock依赖:
SpringBoot依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>spring-test</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.1.RELEASE</version>
            <scope>test</scope>
        </dependency>

SpringMvc依赖:

<dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.8.5</version>
            <scope>test</scope>
        </dependency>
  <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>

 <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

Mock对象

DemoDao demoDao = mock(DemoDao.class);

对象注入到bean

ReflectionTestUtils.setField(demoBean, "demoDao", demoDao);

mock的对象只对demoBean有效,其他地方用到了demoDao,需要重新注入(ReflectionTestUtils.setField(demoBean2, "demoDao", demoDao);)

MockBean

@Service
public class DemoServiceMock {
    @MockBean
    protected DemoService demoService;
    /**
     * mock调用方法
     */
    public void mockPInstanceNull(String param) {
        when(demoService.demoTest(ArgumentMatchers.eq(param))).thenReturn("demoTestString");
    } }

注意:
1.DemoServiceMock 不能被继承,否则会报错

  1. @MockBean
    protected DemoService demoService;

不能在其他地方声明,否则报错
3.尽量使用eq()方法,慎用any**()方法

目录
相关文章
|
4月前
|
JavaScript 数据安全/隐私保护
|
前端开发 JavaScript
Mock 语法讲解
Mock 是生成随机数据,拦截 Ajax 请求的 JavaScript 库。 本文来介绍下 Mock 的常用语法。
Mock 语法讲解
|
数据可视化 前端开发 Java
Mock工具介绍,为什么使用Mock?
Mock工具介绍,为什么使用Mock?
452 0
|
NoSQL JavaScript 前端开发
部署自己的MOCK(一)
本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。
部署自己的MOCK(一)
部署自己的MOCK(二)
本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。
|
前端开发 API
除了 Postman ,还可以用它 Mock测试
新版本还支持 API 分享、团队协作功能
除了 Postman ,还可以用它 Mock测试
|
开发框架 JSON 前端开发
接口自动化测试之Mock
  在某些时候,后端在开发接口的时候,处理逻辑非常复杂,在测试的时候,后端在未完成接口的情况下该如何去测试呢?   我们需要测试,但是有些请求又需要修改一下参数,或者改变一下request实现的方式,比如修改状态码,产生的图片要进行替换,或者是替换执行文件等
446 0
|
敏捷开发 设计模式 Java
mock打桩之EasyMock
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只使用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。
mock打桩之EasyMock
|
测试技术 API
Mockito 一个优秀的 Mock 测试框架
Hello 大家好,我是阿粉,日常工作中很多时候我们都需要同事间的相互配合协作完成某些功能,所以我们经常会遇到服务或者应用内不同模块之间要互相依赖的场景。比如下面的场景,serviceA 中的 methodA() 方式依赖 serviceB 中的 methodB() 方法返回操作的结果。那如果我们要对自己的methodA() 方法进行编写单元测试,还需要等其他同事的methodB() 方法开发完成才行。那有没有什么办法我们可以跳过或者说模拟方法 B 的输出呢?这就引出了我们今天的主角 Mockito,一个优秀的 Mock 测试框架。
Mockito 一个优秀的 Mock 测试框架
|
Go Java
mockito中两种部分mock的实现,spy、callRealMethod
什么是类的部分mock(partial mock)?A:部分mock是说一个类的方法有些是实际调用,有些是使用mockito的stubbing(桩实现)。   为什么需要部分mock? A:当需要测试一个组合方法(一个方法需要其它多个方法协作)的时候,某个叶子方法(只供别人调用,自己不依赖其它反复)已经被测试过,我们其实不需要再次测试这个叶子方法,so,让叶子打桩实现返回结果,上层方法实际调用并测试。
3517 1

热门文章

最新文章