java单元测试之mock

308 阅读1分钟

一、什么是mock测试

Mock测试就是在测试活动中,对于某些不容易构造或者不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法。

二、为什么要进行Mock测试

Mock是为了解决不同的单元之间由于耦合而难于开发、测试的问题。所以,Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。 Mock最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。

三、Mock适用场景

1、需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑。

2、被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理。

3、前后端项目中,后端接口开发完成之前,接口联调。

4、依赖的上游项目的接口尚未开发完成,需要接口联调测试。

5、被测单元依赖的对象较难模拟或者构造比较复杂。

四、代码实例

1、下载mockito-all-1.9.5.jar包

nowjava.com/jar/detail/…

2、新建测试工程

package com.echo.mockito;

public class Demo {
    //新建一个测试方法
    public int add(int a,  int b){
        return a + b;
    }
}

3、编写mock测试方法

package com.echo.mockito;

import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

class DemoTest {
    @Mock
    Demo demo;
    @Test
    void add() {
        MockitoAnnotations.initMocks(this);
        Mockito.when(demo.add(1, 1)).thenReturn(2);
        Assert.assertEquals(2, demo.add(1, 1));
    }
}

4、运行单元测试

f80392c7f23b47219a0b3418734f6669.png