我是靠谱客的博主 乐观小丸子,最近开发中收集的这篇文章主要介绍mock测试一.概述3.mock的案例二.介绍mock,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一.概述
    • 1.什么是mock测试?
    • 2.为什么要有mock测试?
  • 3.mock的案例
  • 二.介绍mock
    • 1.@Mock与@InjectMocks的区别
    • 2.any() 和anyString()方法

一.概述

1.什么是mock测试?

Mock 测试就是在测试过程中,对于某些不容易构造(如 HttpServletRequest 必须在Servlet 容器中才能构造出来)或者不容易获取的比较复杂的对象(如 JDBC 中的ResultSet 对象),用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法。

2.为什么要有mock测试?

Mock是为了解决不同的单元之间由于耦合而难于开发、测试的问题。所以,Mock既能出现在单元测试中,也会出现在集成测试、系统测试过程中。

没用mock时使用了mock
在这里插入图片描述
  • 解释: 比如我们需要调用第三方http接口或者(数据库,硬件资源)时, 所调用的依赖异常导致流程中断我们可以使用mock约定好结果进行返回;
  • 建议: mock接口只能主流程联调/ 异常返回测试,不要过分依赖mock接口进行测试。

3.mock的案例

package Mockito;

import org.junit.Assert;
import org.junit.Test;
import java.util.List;

import static org.mockito.Mockito.*;

public class MyTest {
    @Test
    public void myTest() {
        /* 创建 Mock 对象 */
        List list = mock(List.class);
        /* 设置预期,当调用 get(0) 方法时返回 "111" */
        when(list.get(0)).thenReturn("111");

        Assert.assertEquals("asd", 1, 1);
        /* 设置后返回期望的结果 */
        System.out.println(list.get(0));
        /* 没有设置则返回 null */
        System.out.println(list.get(1));

        /* 对 Mock 对象设置无效 */
        list.add("12");
        list.add("123");
        /* 返回之前设置的结果 */
        System.out.println(list.get(0));
        /* 返回 null */
        System.out.println(list.get(1));
        /* size 大小为 0 */
        System.out.println(list.size());

        /* 验证操作,验证 get(0) 调用了 2 次 */
        verify(list, times(2)).get(0);

        /* 验证返回结果 */
        String ret = (String)list.get(0);
        Assert.assertEquals(ret, "111");
    }
}

二.介绍mock

1.@Mock与@InjectMocks的区别

  • @Mock: 创建一个Mock.
  • @InjectMocks: 创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。
  • 注意:必须使用@RunWith(MockitoJUnitRunner.class) 或 Mockito.initMocks(this)进行mocks的初始化和注入。

2.any() 和anyString()方法

  • any() 无论传入任何参数值,都返回xxx
any(Query.class)
  • anyString() 表示任何一个字符串都可以
anyString() 表示任何一个字符串都可以。null?也可以的!类似 anyString ,还有 anyInt, anyLong, anyDouble 等等。 anyObject 表示任何对象, any(clazz) 表示任何属于clazz的对象。

最后

以上就是乐观小丸子为你收集整理的mock测试一.概述3.mock的案例二.介绍mock的全部内容,希望文章能够帮你解决mock测试一.概述3.mock的案例二.介绍mock所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部