模拟

Mockito(一)——入门篇

醉酒当歌 提交于 2020-03-02 09:06:35
Mockito是一种mock工具/框架。我理解EasyMock有点过时了,Mockito是现在比较流行的。 什么是mock?说的直白一点,大家都知道unit test应该是尽可能独立的。对一个class的unit test不应该再和其他class有任何交互。 现在有一个类,扫描一个目录并将找到的文件都上传到FTP server。该类对于不同的FTP响应(找不到FTP server 或 上传成功,或上传失败),有一些后续操作。 在写这个类的UT时,我们就必须虚构出来一个FTP对象。这样在UT中,这个虚构的对象能够代替真正的FTP,对被测试类的调用做出一定的响应。从而知道被测试类是否正确的调用了FTP并做出一些正确的期望的响应。从而达到测试的目的。 mock可以模拟各种各样的对象,从而代替真正的对象做出希望的响应。 关于mock的概念和EasyMock,可以参考: Mock object and EasyMock framework http://blog.csdn.net/OnlyQi/archive/2011/04/26/6364885.aspx 官网: http://mockito.org/ 一篇很好的入门文章: http://blog.csdn.net/huoshuxiao/archive/2010/12/30/6107835.aspx 一些稍微复杂且实用一点的例子: http

Mockito(三)--完整功能介绍

泄露秘密 提交于 2020-03-02 08:38:08
回到官网:http://mockito.org/,打开documentation可以看到原文。 强烈建议不熟悉Mockito的同学先看看我写的Mockito(一)入门篇和(二)实例篇之后再来看这篇文章。 因为只有看了前两篇文章才明白mockito的本质以及该如何使用它。 下面是按原文 翻译+注释 的对Mockito全部功能的介绍。 1, 使用mockito验证行为。 //首先要importMockito. import static org.mockito.Mockito.*; //mock creation List mockedList = mock(List.class); //using mock object mockedList.add("one"); mockedList.clear(); //验证add方法是否在前面被调用了一次,且参数为“one”。clear方法同样。 verify(mockedList).add("one"); verify(mockedList).clear(); //下面的验证会失败。因为没有调用过add("two")。 verify(mockedList).add("two"); 原文中的一句话很重要: Once created, mock will remember all interactions.

POJ -- 1182 食物链

纵饮孤独 提交于 2020-01-07 05:02:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 题目网址 : POJ -- 1182 这是一道利用并查集模拟的题目,也是并查集的裸题。 乍一看好像有点麻烦,因为会觉得动物们来回吃来吃去情况就会变得越来越复杂。 其实无论X和Y是同类还是捕食关系,归根结底都是集合合并的问题(捕食关系“错位”一下也是对等合并)。 考虑什么时候会发生冲突?冲突的情况只有一个,那就是两个有交集的食物链合并,并且合并的时候发生错位,也就是ABC不对等合并。另外的情况都是元素X所在的食物链和元素Y所在的食物链没有交集,这样合并后更新就好。 举个例子,就是你可以ABC和ABC合并, 也可以ABC和DEF合并,但是绝对不能ABC和BCA或者ACB合并。 原因是你现在获取了两个元素X和Y,他们俩要么处于同一个食物链中,要么处于不同食物链中,不同食物链可以直接合并,相同食物链只能对等合并(其实也就是不用合并),不能错位合并。 并查集是一种树结构,有一个特别典型的特性:只要不是根节点,就先获取根节点再做处理。 其实看过并查集的实现就会发现,如果一个节点不是根节点,那么跟这个节点有关的信息都是没意义的。因为并查集只保证根节点的信息具有时效性,其他非根节点的节点都只有一个作用,那就是找到根节点。 贴下代码,这个模拟的过程还是比较恶心人的。 #include <cstdio> #include