博客
关于我
Mock框架 Mockito
阅读量:611 次
发布时间:2019-03-13

本文共 3059 字,大约阅读时间需要 10 分钟。

Mock技术是软件开发中常用的一种测试方法。它通过创建模拟对象来替代真实的组件或功能,主要用于测试那些不易构造或获取的对象行为。Mock技术的主要目的是确保代码的稳定性和功能性,帮助开发人员在没有真实环境的情况下,验证代码的行为。

单件 interiors

以下是一些常见的Mock工具:

  • JMock
  • EasyMock
  • Mockito
  • PowerMock

Mock 使用场景

Mock技术最适合以下场景:

当真实对象难以获取或构造时,Mock技术可以提供一个虚拟的替代对象。这种方法可以帮助开发人员在没有真实环境的情况下,测试代码的行为。

Mockito 测试

以下是使用Mockito进行测试的一些示例:

import org.junit.Assert;import org.junit.Test;import java.util.ArrayList;import java.util.List;import static org.mockito.Matchers.anyInt;import static org.mockito.Mockito.*;public class MyMockito {    @Test    public void testMockBase() {        List mockList = mock(List.class);        mockList.add("345");        System.out.println(mockList.size()); // 默认返回0        System.out.println(mockList.get(0)); // 默认返回null    }    @Test(expected = RuntimeException.class)    public void testWhenThen() {        List mockList = mock(List.class);        when(mockList.get(0)).thenReturn("111").thenReturn("123");        System.out.println(mockList.get(0)); // 第一次返回111        System.out.println(mockList.get(0)); // 第二次返回123        when(mockList.get(anyInt())).thenReturn("fyh");        System.out.println(mockList.get(0)); // 返回fyh        when(mockList.add(any())).thenThrow(new RuntimeException("添加异常"));        mockList.add("233"); // 执行会抛出异常    }    @Test    public void testVerify() {        List mockList = mock(List.class);        mockList.size();        mockList.get(1);        mockList.get(1);        verify(mockList, never()).isEmpty();        verify(mockList).size();        verify(mockList, times(2)).get(1);        verify(mockList, atLeast(2)).get(1);        verify(mockList, atMost(10)).get(1);        verify(mockList, timeout(10000).times(2)).get(1);        verify(mockList, times(2)).get(anyInt());    }    @Test    public void testAssert() {        List mockList = mock(List.class);        Assert.assertEquals(mockList.size(), 0);        Assert.assertArrayEquals(mockList.toArray(), mockList.toArray());        Assert.assertNotEquals("ss", "sss");        Assert.assertNotNull(mockList);        Assert.assertSame(mockList.get(1), null);        Assert.assertNull(mockList.get(1));    }    @Test    public void testSpy() {        ArrayList list = new ArrayList<>();        List spy = spy(list);        spy.add("111");        spy.add("123");        System.out.println(spy.get(0)); // 111        System.out.println(spy.get(1)); // 123        System.out.println(spy.size()); // 2        spy.get(2); // 会抛出异常    }}

Spy 操作

Spy技术是Mock的一种扩展功能。它允许开发人员创建一个真实对象的轻量级代理,而不是完全替换真实对象。Spy对象可以委派给真实对象的一部分方法行为。

import org.junit.jupiter.api.Test;import org.mockito.Mock;import org.mockito.Spy;public class SpyTest {    @Mock    private List
mockList; @Test public void testSpy() { mockList.add("111"); mockList.add("123"); spy = spy(mockList); System.out.println(spy.get(0)); // 111 System.out.println(spy.get(1)); // 123 System.out.println(spy.size()); // 2 spy.get(2); // 会抛出异常,因为mockList中没有第二个元素 }}

Mock技术和Spy技术是现代测试工具中非常实用的功能。它们帮助开发人员在没有真实环境的情况下,通过模拟对象来验证代码的行为和功能。这两种技术在单元测试、集成测试以及异步性测试中都有广泛应用。

转载地址:http://pncaz.baihongyu.com/

你可能感兴趣的文章
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南002---大数据之Nifi工作笔记0069
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO_通道之间传输数据
查看>>
NIO三大组件基础知识
查看>>
NIO与零拷贝和AIO
查看>>
NIO同步网络编程
查看>>