easymock接口模拟

EasyMock mock objects can have three types – default, strict and nice. We can specify mock object type using MockType enum while creating the mock object.

EasyMock模拟对象可以具有三种类型-默认,严格和良好。 我们可以在创建模拟对象时使用MockType 枚举指定模拟对象类型。

EasyMock模拟类型 (EasyMock Mock Types)

  1. Default: Expects only recorded calls but in any order. Test won’t fail if any recorded calls are skipped.默认值:仅预期录制的呼叫,但以任何顺序。 如果跳过任何录制的呼叫,测试不会失败。
  2. Strict: Expects only recorded calls and in the same order they have been recorded.严格:仅预期已录制的呼叫,并且录制的顺序相同。
  3. Nice: Expects recorded calls in any order and return default empty values (0, null, false) for unexpected calls.尼斯:预期以任何顺序记录的呼叫,并为意外呼叫返回默认的空值(0,null,false)。

We can create strict or nice mock object by specifying it’s mock type.

我们可以通过指定模拟类型来创建严格或不错的模拟对象。

Object mock = mock(MockType.STRICT, Object.class);Object mock1 = mock(MockType.NICE, Object.class);

If you are using @Mock annotation, then you can specify the mock type by any of following ways.

如果使用@Mock注解 ,则可以通过以下任何一种方式指定模拟类型。

@Mock(MockType.STRICT)
Object obj;@Mock(type=MockType.NICE)
Object obj1;

EasyMock严格的模拟示例 (EasyMock Strict Mock Example)

Let’s look at a simple example of the strict mock type. We will record few behaviors of an ArrayList mock object and replay them in the same order.

让我们看一个严格的模拟类型的简单示例。 我们将记录ArrayList模拟对象的一些行为,并以相同顺序重播它们。

package com.journaldev.easymock;import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.mock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;import java.util.ArrayList;import org.easymock.MockType;
import org.junit.jupiter.api.Test;public class EasyMockStrictMockExample {@Testpublic void test() {ArrayList<Integer> mockList = mock(MockType.STRICT, ArrayList.class);expect(mockList.add(10)).andReturn(true);expect(mockList.add(20)).andReturn(true);expect(mockList.size()).andReturn(2);expect(mockList.get(0)).andReturn(10);replay(mockList);mockList.add(10);mockList.add(20);assertEquals(mockList.size(), 2);assertTrue(mockList.get(0) == 10);verify(mockList);}
}

If an unexpected method is called on a strict mock object, the error message will show the method calls expected at this point followed by the first conflicting method call.

如果在严格的模拟对象上调用了意外的方法,则错误消息将显示此时期望的方法调用,然后是第一个冲突的方法调用。

If there are missing calls, then verify() method error message will show all missing method calls.

如果缺少调用,则verify()方法错误消息将显示所有缺少的方法调用。

EasyMock Nice Mock示例 (EasyMock Nice Mock Example)

Now let’s have a look at the nice mock example. We will make some unrecorded calls and notice that the returned value is the default value of the method return type.

现在,让我们看一下漂亮的模拟示例。 我们将进行一些未记录的调用,并注意返回的值是方法返回类型的默认值。

package com.journaldev.easymock;import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.mock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertFalse;import java.util.ArrayList;import org.easymock.Mock;
import org.easymock.MockType;
import org.junit.jupiter.api.Test;public class EasyMockNiceMockExample {@Testpublic void test() {ArrayList<Integer> mockList = mock(MockType.NICE, ArrayList.class);expect(mockList.add(10)).andReturn(true);expect(mockList.size()).andReturn(2);expect(mockList.get(0)).andReturn(10);replay(mockList);mockList.add(10);// below will NOT throw exception because of nice mockboolean b = mockList.add(30);assertFalse(b);assertEquals(mockList.size(), 2);assertTrue(mockList.get(0) == 10);//verify won't throw error for unexpected calls for nice mockverify(mockList);}
}

摘要 (Summary)

EasyMock strict mocking can be handy when our test methods have to be called in specific order. For example, CRUD operations mocking. Similarly, if we want to allow unexpected calls to pass, we can use nice mock.

当必须按特定顺序调用我们的测试方法时,EasyMock严格的模拟可以派上用场。 例如,CRUD操作模拟。 同样,如果我们希望允许意外调用通过,则可以使用漂亮的模拟。

GitHub Repository.GitHub存储库中检出完整的项目和更多EasyMock示例。

翻译自: https://www.journaldev.com/22234/easymock-nice-strict-mock

easymock接口模拟

easymock接口模拟_EasyMock好又严格的模拟相关推荐

  1. easymock接口模拟_EasyMock部分模拟

    easymock接口模拟 EasyMock supports creating partial mock, where we can specify the methods that will be ...

  2. easymock接口模拟_EasyMock模拟异常

    easymock接口模拟 EasyMock allows us to mock exceptions when a specific method is called. We can do this ...

  3. Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子

    模拟12306买票过程 共享资源,并发(线程安全) Web12306.java /*** 共享资源,并发(线程安全)* @author Administrator**/ public class We ...

  4. android模拟按键方法,Android随笔之——模拟按键操作的几种方式

    前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之--使 ...

  5. Android系统中模拟GPS位置,Android系统中模拟GPS位置

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Android系统中提供了模拟GPS坐标的功能,可以很方便的帮助我们测试不同地理位置下应用中各个功能效果. 模拟器中模拟 ...

  6. 随机模拟【1】:随机模拟的研究范围与特征

    本系列同步发布于本人的知乎专栏:确定性随机 最新想开始再系统学习一次数理统计和随机过程方便的知识,但是耽搁了一段时间,主要原因是不知道从哪里开始.最近,刚好在网上"随机"地买了一本 ...

  7. 模拟六:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 自我解题笔记

    模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记 模拟二:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 解题后期更新 模拟三:STEMA 考试选择题模拟练习试卷( ...

  8. 模拟四:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 自我解题笔记

    模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记 模拟二:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 解题后期更新 模拟三:STEMA 考试选择题模拟练习试卷( ...

  9. 模拟三:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记

    模拟一:STEMA 考试选择题模拟练习试卷(初级组)及答案 + 自我解题笔记 模拟二:STEMA 考试选择题模拟练习试卷(中级组)及答案 + 解题后期更新 模拟三:STEMA 考试选择题模拟练习试卷( ...

最新文章

  1. git解决代码提交冲突
  2. 如何从Subversion存储库中git-svn克隆最后n个修订版?
  3. 【运筹学】线性规划数学模型 ( 知识点回顾 | 可行解 | 最优解 | 阶梯型矩阵 | 阶梯型矩阵向量 | 基 | 基向量 | 基变量 | 非基变量 )
  4. tcp传输中的序列号
  5. 海量存储系列下--转载,值得一读
  6. 计算机图形学基础考试题,计算机图形学基础复习题
  7. hdu 4982 贪心构造序列
  8. Scala go java_Java、Scala和Go语言多线程并发对比测试结果和结论
  9. Confluence 6 上传文件
  10. 重拾C++之虚函数和虚基类以及抽象类
  11. 如何让自己电脑的鼠标指针变的更炫酷来看看这个吧
  12. endnote X7使用方法
  13. c语言程序设计马秀丽课后题答案,c语言程序设计课后题答案马秀丽
  14. 联想K31笔记本完全拆解,装不回去了。想做个电视机或者显示器
  15. 看《西游记》谈团队管理
  16. redis中set、setnx和setex
  17. 看过1000份算法简历,才明白人工智能、机器学习、深度学习!!!
  18. 【SoC FPGA】外设PIO按键点灯
  19. Flask实战开发在线问答系统
  20. 【论文笔记】LARA:基于GAN的解决冷启动问题的推荐系统

热门文章

  1. 【模拟】NCPC 2014 E ceremony
  2. Android动画系列 - PropertyAnim 详解
  3. SQL2005安装及链接
  4. [转载] OpenCV-Python 图像处理(二):图像的读取、显示与保存
  5. [转载] python cmp函数比较字典_Python 字典(Dictionary) cmp()方法
  6. 设计方案--移动端延迟300ms的原因以及解决方案
  7. BZOJ.5093.[Lydsy1711月赛]图的价值(NTT 斯特林数)
  8. Vuex初级入门及简单案例
  9. 跳一跳外挂的python实现--OpenCV步步精深
  10. maven安装的详细步骤