-
单元测试使用Mockit,测试interface的实际意义在哪里?25
学习和使用mockit这个框架的过程中,我发现我陷入了一个迷糊中,希望有人可以为我解答或者给出一些链接。
Mockit的文档第一个例子如下:
1. Let's verify some behaviour!//Let's import Mockito statically so that the code looks clearer import static org.mockito.Mockito.*; //mock creation List mockedList = mock(List.class); //using mock object mockedList.add("one"); mockedList.clear(); //verification verify(mockedList).add("one"); verify(mockedList).clear();
我想知道的是,
如果一个List interface是编译通过的,上述代码例子中的测试的行为就是可预期的且一定成功的吗? 既然是一定成功,
为什么还需要专门的测试来测试这个接口?
问题可能很弱智,但是很纠结,希望有人可以为我解解惑。。。
问题补充:suziwen 写道引用写接口的目的一般是,让这个接口的所有实现都具备某个共同的行为。这个行为不仅目前实现的类具备,将来要写的实现也都必须具备。因此,就需要为这个接口编写一个通用的测试程序,这个测试程序不仅能测试当前已经实现的类的通用属性,而且可以不加修改应用于将来要实现的类。
谢谢您的回复。
我的问题可能描述不是很清楚。首先有一个前提就是的:我的代码是Java写的。
所以问题应该如下:
1.像Java这样一种语言,如果我的Interface已经写好并且编译通过,应该意味着预期的行为就是正确的。我期望传入的参数以及我希望返回的数据类型,在编译阶段不就可以确定了吗?
2. 您的回答中有一句: “这个测试程序不仅能测试当前已经实现的类的通用属性”,我想问的是,针对接口的测试,如我在问题中所贴出的代码? 怎么能够“测试当前已经实现的类的通用属性”? 在这个测试中,没有任何跟具体的实现类的关联存在。我在代码中贴的测试只能测试到这个Interface本身的约定,并不能测试到任何具体的实现类?
谢谢。2012年3月14日 14:31
3个答案 按时间排序 按投票排序
-
我来举个例子吧,譬如说某个功能你的代码需要调用另外一个模块,而这个模块还没有开发好,你又想测试你的代码,怎么办呢? 如果设计良好的话,你们之间的约定可能是通过interface来定义的,说白了就是什么方法,几个参数,返回值是什么。
然而你不想等到别人开发好了才做集成测试,这样就太迟了,严重影响代码的质量。
怎么办呢,你可能会用匿名内部类,或者自己实现那个interface的implementation class来模拟另外一个模块,可是你很快就会发现,如果interace定义了n个方法而你仅仅需要调用其中的一个,你不得不实现所有的方法,而且模拟同一个方法返回的不同情况,你还要写很多个不同的实现类。
这时候这些模拟框架就发威了, 一两行就搞定了
List mockedList = mock(List.class);
when(mockedList.get(0).thenReturn("fisrt");
另外的情况,比如你的代码要从部署server获取一些信息,例如jndi, 那么你的code同样可以模拟这些从某个接口取值,而对容器没有任何依赖。
这是我的一些粗浅的见解,欢迎批评指正。2014年3月25日 10:50
-
引用写接口的目的一般是,让这个接口的所有实现都具备某个共同的行为。这个行为不仅目前实现的类具备,将来要写的实现也都必须具备。因此,就需要为这个接口编写一个通用的测试程序,这个测试程序不仅能测试当前已经实现的类的通用属性,而且可以不加修改应用于将来要实现的类。
2012年3月14日 22:05
相关推荐
选项A:show ip access-list 选项B:list ip interface 选项C:show ip interface 选项D:show access-list 答案:show ip interface 题目:以下什么命令能加密所有明文口令? 选项A:Router(config)#password-...
对于session对象的setMaxInactiveInterval(int interval) 如果参数设置为负数.....
选项A:区分二层和三层数据包 选项B:在二层唯一确定一台设备 选项C:允许设备在不同网络中通信 选项D:允许同一网络的不同设备通信 国开作业计算机组网技术-单元测试21参考(含答案)全文共2页,当前为第1页。...
本文对这些方法在软件单元测试中的使用进行说明。 说明:本文参照的是ISO26262:2018版 测试方法: • Requirements-based test (基于需求测试) 用于确认软件单元完全正确的实现了“软件单元层面的需求”,"软件...
UT 该项目是使用版本11.2.5生成的。节点版本nvm use .nvmrc...运行单元测试运行ng test以通过执行单元测试。运行端到端测试运行ng e2e通过执行端到端测试。进一步的帮助要获得有关Angular CLI的更多帮助,请使用ng hel
内部会有不同业务线的测试用例层,编写测试用例逻辑,调用API层,进行接口流程自动化测试,并真的测试预期结果进行断言备注:推荐使用pytest单元测试框架+jenkins持续集成+allure报告,教程见:
目录interfaceTask使用django+python编写的一个get请求接口 目录autoInterface使用pytest+locust做了一个简单接口自动化+性能测试。 其中性能测试主目录为performaneTest 环境搭建与启动 安装django:pip install ...
接口开发,API接口开发,底层接口开发,服务器开发,数据开发,服务器开发,app开发接口测试interface-test-master.zip
The Linux Programming Interface ...pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
run:运行测试并将结果返回到指定的TestResult 中 Class Assert 首先,Assert 提供的public 方法都可以带或不带自己定义的提示,其次Assert 中的Assert 方法是protected 的,这意外着Assert 是一个静态类,它提供的...
OpenProtocol 阿拉特斯扭矩枪开放协议测试工具
你也可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中。 使用--prod标志进行生产构建。 运行单元测试 运行ng test以...
适用于插上usb线,手机adb连接不上,找不到adb interface驱动的情况.
全食现场演示: : 该项目是使用版本10.0.7生成的...运行单元测试运行ng test以通过执行单元测试。运行端到端测试运行ng e2e通过执行端到端测试。进一步的帮助要获得有关Angular CLI的更多帮助,请使用ng help或查看 。
您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中。 使用--prod标志进行生产构建。 运行单元测试 运行ng test以...
关于如何在Go中使用接口替换进行测试的简单示例此仓库显示了一种无需测试即可重构具有测试依赖项的功能的方法。 这是一个简化的示例,基于出色的文章《编写单元测试时,请勿使用模拟》 (请参阅参考资料)。 示例...
电子角该项目是使用版本8.3.20生成的。...运行单元测试运行ng test以通过执行单元测试。运行端到端测试运行ng e2e通过执行端到端测试。进一步的帮助要获得有关Angular CLI的更多帮助,请使用ng help或查看 。
您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中。 使用--prod标志进行生产构建。 运行单元测试 运行ng test...
您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module 。 建造 运行ng build来构建项目。 构建工件将存储在dist/目录中。 使用--prod标志进行生产构建。 运行单元测试 运行ng test以...
宠物小精灵清单该项目是使用版本11.2.6生成...运行单元测试运行ng test以通过执行单元测试。运行端到端测试运行ng e2e通过执行端到端测试。进一步的帮助要获得有关Angular CLI的更多帮助,请使用ng help或查看“ 页面。