使用EasyMock或Mockito
我不打算在同一项目中使用两个框架来实现相同的目的,因此我采用了Mockito 。
因此,在过去的几个月中,我一直在使用Mockito ,这是我对两者的比较分析。
public class MyApp {MyService service;OtherService otherService;void operationOne() {service.operationOne();}void operationTwo(String args) {String operationTwo = otherService.operationTwo(args);otherService.operationThree(operationTwo);}void operationThree() {service.operationOne();otherService.operationThree("success");}
}class MyService {void operationOne() {}
}class OtherService {public String operationTwo(String args) {return args;}public void operationThree(String operationTwo) {}
}
现在,让我使用EasyMock和Mockito为此类编写一个简单的测试用例。
public class MyAppEasyMockTest {MyApp app;MyService service;OtherService otherService;@Beforepublic void initialize() {service = EasyMock.createMock(MyService.class);otherService = EasyMock.createMock(OtherService.class);app = new MyApp();app.service = service;app.otherService = otherService;}@Testpublic void verifySimpleCall() {service.operationOne();EasyMock.replay(service);app.operationOne();EasyMock.verify(service);}}
public class MyAppMockitoTest {MyApp app;MyService service;OtherService otherService;@Beforepublic void initialize() {service = Mockito.mock(MyService.class);otherService = Mockito.mock(OtherService.class);app = new MyApp();app.service = service;app.otherService = otherService;}@Testpublic void verifySimpleCall() {app.operationOne();Mockito.verify(service).operationOne();}}
void operationOne() {service.operationOne();service.someOtherOp();}
public class MyAppEasyMockTest {@Testpublic void verifyMultipleCalls() {String args = "one";EasyMock.expect(otherService.operationTwo(args)).andReturn(args);otherService.operationThree(args);EasyMock.replay(otherService);app.operationTwo(args);EasyMock.verify(otherService);}@Test(expected = RuntimeException.class)public void verifyException() {service.operationOne();EasyMock.expectLastCall().andThrow(new RuntimeException());EasyMock.replay(service);app.operationOne();}@Testpublic void captureArguments() {Capture<String> captured = new Capture<String>();service.operationOne();otherService.operationThree(EasyMock.capture(captured));EasyMock.replay(service, otherService);app.operationThree();EasyMock.verify(service, otherService);assertTrue(captured.getValue().contains("success"));}}public class MyAppMockitoTest {@Testpublic void verifyMultipleCalls() {String args = "one";Mockito.when(otherService.operationTwo(args)).thenReturn(args);app.operationTwo(args);Mockito.verify(otherService).operationTwo(args);Mockito.verify(otherService).operationThree(args);Mockito.verifyNoMoreInteractions(otherService);Mockito.verifyZeroInteractions(service);}@Test(expected = RuntimeException.class)public void verifyException() {Mockito.doThrow(new RuntimeException()).when(service).operationOne();app.operationOne();}@Testpublic void captureArguments() {app.operationThree();ArgumentCaptor capturedArgs = ArgumentCaptor.forClass(String.class);Mockito.verify(service).operationOne();Mockito.verify(otherService).operationThree(capturedArgs.capture());assertTrue(capturedArgs.getValue().contains("success"));Mockito.verifyNoMoreInteractions(service, otherService);}
}
@RunWith(MockitoJUnitRunner.class)
public class MyAppMockitoTest {MyApp app;@MockMyService service;@MockOtherService otherService;@Beforepublic void initialize() {app = new MyApp();app.service = service;app.otherService = otherService;}
}
参考: 到目前为止 ,我们的JCG合作伙伴 Rahul Sharma 使用EasyMock或Mockito在The road…博客博客中。
翻译自: https://www.javacodegeeks.com/2012/08/using-easymock-or-mockito.html
使用EasyMock或Mockito相关推荐
- Mock工具之Mockito实战
在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行.为了解决这类问题我们引入 ...
- 单元测试之带你搞懂Mockito使用
Mock介绍 在平时开发过程中,我们往往会遇到以下问题 1.由于依赖调用的接口没有开发完成,需要等待(客户端和服务端,服务端和其他服务之间) 2.自测时由于服务器故障等无法正常调用接口,或者一些边界条 ...
- mockito mock void方法_使用 Junit + Mockito 实践单元测试!
一.前言 相信做过开发的同学,都多多少少写过下面的代码,很长一段时间我一直以为这就是单元测试... @SpringBootTest @RunWith(SpringRunner.class) publi ...
- java junit mock_使用Mockito进行Java的Mock测试
测试替身 dummy用于传递,不会真正使用,例如用于填充的方法的参数列表. Fake有简单实现,但通常被简化,比如在内存数据库,而不是真正的数据库中使用. Stub是接口或类中部分实现,测试时使用其实 ...
- powermock私有字段_使用PowerMock的EasyMock私有方法模拟
powermock私有字段 Sometimes we want to test a method that is using a private method. We can create the m ...
- easymock教程_EasyMock教程
easymock教程 EasyMock is a java based mocking framework, which is used in conjunction with other unit ...
- easymock使用方法_EasyMock最终方法– PowerMock,JUnit 4,TestNG
easymock使用方法 One of the limitations of EasyMock is that it can't mock final methods and final classe ...
- easymock使用方法_EasyMock静态方法– PowerMock,JUnit 4,TestNG
easymock使用方法 One of the limitations of EasyMock is that it can't mock static methods. However, we ca ...
- Easymock十分钟入门
本文链接: 目录 一.Easymock简单介绍 二.easymock使用准备 三.Easymock使用步骤 四.扩展-powermock 一.Easymock简单介绍 EasyMock 是一套用于通过 ...
最新文章
- ubuntu 18.04安装jdk8和eclipse
- java node websocket_nodejs怎么实现webSocket接口即时通讯服务?
- gem install 和 bundle 区别
- linux中查看mysql版本的方法汇总
- .NET常用类库--苏飞合集
- 匈牙利算法求最大匹配(HDU-4185 Oil Skimming)
- python深度学习之TensorFlow
- Python:minicap实现快速截图
- linux rm批量,Linux rm删除大批量文件
- cisco链路聚合 不均衡_Cisco PT 案例七:配置链路聚合 / 负载均衡
- 计算机专业英语复习第一天
- python程序员工资待遇-看看你是哪种级别的Python程序员(已跪)
- MMQ broker(MQTT 分布式服务器)
- 安卓APP开发之工程构建
- 树莓派3B学习资源链接——Ideas Deserve Spreading.
- Git操作失败提示fatal: Unable to create 'E:/GitDemos/todolist/.git/index.lock': File exists...
- 特里回归战世界杯 英足总主席力挺 霍奇森已拒绝
- Unity---枚举类
- 从项目制到产品制,日子变美好了吗?
- android生成车票动效,Android项目源码功能齐全的12306火车票订票系统项目
热门文章
- 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)
- Java bytecode instruction listings
- jmc线程转储_查找线程转储中的异常和错误
- jdk8 npe_JDK 14中更好的NPE消息
- spring 注释_Spring@懒惰注释
- 纹理和基元_Java的精妙之处,包括基元和变量参数数组
- c++ 嵌套私有类_嵌套类和私有方法
- java登录界面命令_Java命令行界面(第19部分):jClap
- couchbase集群_使用CLI扩展和重新平衡Couchbase集群
- 只针对异常的情况才使用异常_如何以及何时使用异常