EasyMock常用方法
1. EasyMock类中的常用方法
static T createMock(java.lang.Class<?> toMock)用于创建被模拟的对象
static IMockControl createControl() 创建一个IMockControl对象,使用这个对象可以创建多个mock对象,并能使用它来控制这些mock对象。
static replay(java.lang.Object... mocks) 主要测试对象将被创建,模拟真实运行环境下主要测试对象的行为。
static reset(java.lang.Object... mocks)清空对mock对象的值。
static verify(java.lang.Object... mocks) 验证mock对象的使用情况是否与预期的一致 。
static IExpectionSetters expect(T value) 参数为期望的方法调用,返回一个IExpectionSetters 类型的对象,可以在这个对象上设置期望的返回值等。例如:EasyMock.expect(obj.f()).andReturn(2)即在obj对象上调用f方法并希望得到的返回值为2。
static IExpectionSetters expectLastCall()返回对上一个方法调用的IExpectionSetters对象,这个方法通常是用于期望执行的方法的返回值类型为void。
2. IMockControl类中的常用方法(主要用于创建mock对象,并管理mock对象)
createMock(java.lang.Class<?> toMock) 创建mock对象
replay()将IMockControl对象创建的所有Mock对象切换至“播放”状态
reset()清空IMockControl对象创建的所有Mock对象的期望
verify()验证IMockControl对象创建的所有Mock对象
3. IExpectionSetters接口的主要方法(允许对调用的方法进行相关的设置)
IExpectionSetters andReturn(T value)设置期望的返回值
IExpectionSetters andThrow(java.lang.Throwable throw)设置期望抛出的异常
IExpectionSetters anyTimes() 期望方法被调用任意次
IExpectionSetters atLeastOnce() 期望方法至少被调用一次
IExpectionSetters once()期望方法被调用一次
IExpectionSetters times(int n)期望方法被调用n次
IExpectionSetters times(int min,int max)期望方法调用的次数在min和max之间
4.class mock 的限制
1) 不能mock类的 final方法。如果final方法被调用,则只能执行原有的正常代码。
2) 不能mock类的static 方法。
3) 同样如果private方法被调用,只能执行原有的正常代码。
4) 不能mock类的一些特殊方法: equals(), toString()和hashCode().原因是easymock的实现是为每个class mock对象提供了内建的以上三个方法。需要强调的是,对于基于interface的mock,这个限制也是同样存在的,即使以上三个方式是interface定义的一部分。
5) 在使用时需要避开这种场景,或者组合使用其他的mock 框架比如jmockit来mock private方法和final方法。
Mockito的常用方法
1. public static <T> T mock(java.lang.Class<T> classToMock) 创建mock对象
2. public static <T> T verify(T mock) 验证某方法是否被调用
eg: verify(mockedList).add("one");//验证mockedList对象的add方法是否在前面被调用了一次,且参数为“one”
3. public static <T> NewOngoingStubbing<T> when(T methodCall) 调用某方法时返回特定的值
eg:when(mockedList.get(0)).thenReturn(“first”) //调用mockedList.get(0)时返回”first”
4. public static <T> T verify(T mock, VerificationMode mode) 验证方法被调用了特定次数/至少x次/最多x次/从未被调用
eg: verify(mockedList, times(2)).add("twice");//是否add(“twice”)被调用了两次。
5. public static Stubber doThrow(java.lang.Throwable toBeThrown)抛出异常。
eg:doThrow(new RuntimeException()).when(mockedList).clear();//调用方法时抛出异常。
另参考:http://blog.csdn.net/onlyqi/article/details/6396646
分享到:
相关推荐
2.easymock的使用实例 3.mockito的使用实例 版本库地址 HTTPS协议: https://github.com/ichunming/junit.git SSH协议: git@github.com:ichunming/junit.git 克隆版本库 操作示例:`$ git clone git@github....
EasyMock与Mockito、PowerMock等工具相比,各有优缺点。EasyMock适合简单的模拟场景,而Mockito提供了更丰富的功能和更简洁的API。PowerMock则可以模拟静态方法、构造函数等不易模拟的元素。 总的来说,EasyMock是...
PowerMock与EasyMock是Java单元测试领域中的两个重要库,它们与JUnit结合使用,能够帮助开发者在测试过程中模拟复杂的对象行为和系统环境。这个压缩包"powermock-easymock-junit-1.5.4.zip"很可能包含了这三个库的...
### EasyMock与Mockito的比较 Mockito是另一款流行的模拟框架,它在易用性和功能上有所增强,如更简洁的API、更强大的匹配器以及更友好的错误消息。虽然EasyMock功能强大,但Mockito在社区支持和新特性的更新上更为...
EasyMock与其他模拟框架如Mockito相比,更注重预定义行为,而Mockito则更倾向于使用“行为验证”和“记录-重放”模式。尽管如此,EasyMock依然在很多项目中广泛使用,尤其在那些需要精确控制对象行为的复杂测试场景...
Easymock与Mockito等其他模拟框架相比,各有优缺点。Mockito更注重简洁的API和易用性,而Easymock则提供了更多高级功能和灵活性。 六、资源与学习路径 "easymock教程.srf"文件很可能是教程文档,使用SRF阅读器.exe...
EasyMock是一个强大的模拟框架,它允许开发者创建预期的交互(mock objects)并验证这些对象是否按照预期的方式与实际代码进行交互。在EasyMock中,你可以定义mock对象的方法调用行为,比如返回特定值或抛出异常。这...
在阅读“easymock教程-easymock的典型使用 - 一个执着的程序员 - 博客频道 - CSDN.NET.html”这篇教程时,应重点关注如何创建和配置模拟对象,理解预设行为和验证的方法,以及如何将EasyMock与Junit结合使用。...
四、EasyMock与Mockito对比 虽然EasyMock功能强大,但随着Mockito的出现,许多开发者转向了后者。Mockito提供了更简洁的API,支持更多高级特性,如验证方法调用顺序、部分mocking等。然而,EasyMock仍然在一些场景...
总结一下,Easymock3.1和PowerMock1.4.10是Java单元测试的重要工具,它们与JUnit配合使用,可以帮助开发者对各种复杂情况进行精确的测试,提高代码质量。在实际项目中,正确地使用这些库可以大大提升测试的覆盖率和...
PowerMock是一个扩展了其他Mocking框架(如EasyMock和Mockito)的库,它允许开发者对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器进行模拟和mock。在传统测试框架中,这些通常是难以或无法测试...
3. **非期望-执行-验证模式**:与EasyMock或jMock等框架不同,Mockito采用的是非期望-执行-验证模式,即先执行业务逻辑再验证模拟对象的交互情况。 #### 如何在Mockito中创建Mocks 在Mockito中创建Mocks非常简单,...
7. **Mockito集成**:EasyMock 3.1还支持与另一个流行的测试库Mockito的集成,这使得开发者可以利用两者的优点,扩展测试能力。 在实际使用中,你需要将EasyMock的jar包添加到你的项目构建路径中。然后,你可以创建...
- **Mockito Integration**:EasyMock与Mockito结合,可以利用两者的优点,提供更丰富的模拟选项。 ### 应用实例 假设我们有一个`Calculator`类,它依赖于`NumberService`接口。在测试`Calculator.add()`方法时,...
Easymock与其他模拟框架如Mockito和PowerMock相比,各有优缺点。Mockito提供更简洁的API,而PowerMock则能模拟静态方法和构造器。选择哪种工具取决于项目需求和个人喜好。 7. **最佳实践**: - 优先使用模拟,而...
PowerMock 也是一个单元测试模拟...PowerMock 的目的就是在当前已经被大家所熟悉的接口上通过添加极少的方法和注释来实现额外的功能,目前,PowerMock 仅支持 EasyMock 和 Mockito。 标签:PowerMock 单元测试
PowerMockito是一个强大的Java单元测试框架,它扩展了其他如EasyMock等mock库的功能,能够模拟静态方法、构造函数、final类和方法、私有方法,甚至静态初始化器。这使得开发者能够在单元测试中隔离被测试对象,不受...
Currently PowerMock supports EasyMock and Mockito. When writing unit tests it is often useful to bypass encapsulation and therefore PowerMock includes several features that simplifies reflection ...
1. **入门**:在这个阶段,你会了解到PowerMock的基本概念,包括为什么要使用PowerMock,以及它与easymock和mockito的区别。将介绍如何设置项目环境,引入PowerMock库,并创建第一个测试案例。 2. **PowerMock基本...