1. 生成 Mock 对象
如何创建一个需要严格遵守调用顺序的mock对象?
SomeInterface mockObj = createStrictMock(SomeInterface.class);
如果你不想对每一个方法设定预期行为,对于这些非预期的方法调用你不想让EasyMock抛出AssertionError,你可以创建一个“nice”的mock对象,所有没有设定预期行为的方法会悄悄地返回一些空值(0, null或者false)。
SomeInterface mockObj = createNiceMock(SomeInterface.class);
当然,如果你使用MockControl来创建Mock对象,都有相应的方法:createStrictControl和createNiceControl。(其实当你调用createMock等方法时,都生成了一个相应的control。)
2. 开关调用顺序检查
如果在测试某处你想关闭strict模式,使用:
checkOrder(mockObj, false);
当然,如果想重新开启,可以使用
checkOrder(mockObj, true);
3. 设定预期行为和输出
期望一个方法始终返回期望的值,而不管调用次数:
expect(mockObj.someAction(1)).andStubReturn("one");
下面的方法与此等价:
expect(mockObj.someAction(1)).andReturn("one").anyTimes();
设定确定的调用次数:
expect(mockObj.someAction(1)).andReturn("one").times(3);
设定调用次数在某个范围内:
expect(mockObj.someAction(1)).andReturn("one").times(3, 5);
期望抛出异常:
expect(mockObj.someAction(1)).andThrow(someException);
4. 参数匹配
任意参数:
expect(mockObj.someAction(anyInt())).andStubReturn("one");
当然,相应的有anyObject(), anyChar()等等。
在参数上应用逻辑操作:
expect(mockStatement.executeQuery(and(startsWith("select"), endsWith("order;")))).andReturn(mockResultSet);
EasyMock提供大量其它的逻辑操作。
自定义参数匹配器:
expect(mockStatement.executeQuery(SQLEquals("SELECT * FROM ORDER;"))).andReturn(mockResultSet);
private static String SQLEquals(String in) {
reportMatcher(new SQLEquals(in));
return in;
}
private static class SQLEquals implements IArgumentMatcher {
private String expectedSql;
public SQLEquals(String expectedSql) {
this.expectedSql = expectedSql;
}
public boolean matches(Object actualSql) {
if (actualSql == null && expectedSql == null)
return true;
if (actualSql.getClass() == String.class)
return expectedSql.equalsIgnoreCase((String) actualSql);
return false;
}
// others omited.
}
5. 没有结束
EasyMock还提供了太多其他的功能,大家还是查API吧。
分享到:
- 2009-01-05 15:16
- 浏览 903
- 评论(0)
- 论坛回复 / 浏览 (0 / 6707)
- 查看更多
相关推荐
【EasyMock的使用场景】 EasyMock适用于以下几种情况: 1. **依赖隔离**:当被测试类依赖于其他复杂或难以配置的外部服务或资源时,EasyMock可以通过模拟这些依赖,使测试环境更加可控。 2. **测试驱动开发(TDD...
2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象。这个对象将代表你要模拟的真实对象。例如,如果你有一个名为`MyService`的服务类,你可以创建一个`MyService`的模拟对象。 3. **定义行为**:...
EasyMock和Mockito是两个广泛使用的Java模拟框架,它们可以帮助开发者在隔离环境中测试代码,避免了依赖其他组件或服务的复杂性。本文将详细介绍这两个工具的使用方法、原理和差异。 **EasyMock** EasyMock是一个...
EasyMock是Java编程中的一款强大的模拟框架,它允许开发者在单元测试中创建和控制...通过阅读《EasyMock使用简明手册》和解压后的easymock2.4.zip文件,开发者可以深入理解并掌握如何有效地使用EasyMock进行单元测试。
在实际使用EasyMock时,我们通常会遵循以下步骤: 1. **创建模拟对象**:首先,你需要通过`EasyMock.createMock()`方法创建一个模拟对象。例如,如果你有一个名为`MyInterface`的接口,你可以这样创建它的模拟对象...
本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与...
Junit和EasyMock是Java领域中广泛使用的两个工具,它们协同工作,提供了强大的单元测试能力。本文将深入探讨这两个工具的使用,并通过案例分析帮助你更好地理解和应用它们。 **Junit简介** JUnit是Java编程语言中最...
三、进阶使用 除了基本的模拟和预期,EasyMock 3.0 还提供了更高级的功能,如: - NiceMocks 和 StrictMocks:NiceMocks 允许未预期的调用返回默认值,而 StrictMocks 会抛出异常,确保测试的严谨性。 - EasyMock ...
- **创建模拟对象**:你可以使用`EasyMock.createMock()`方法创建一个模拟对象,然后通过`EasyMock.replay()`进入“播放”模式,让模拟对象按照预期执行。 - **设置预期**:使用`expect()`方法设置对模拟对象的期望...
例如,使用`@Before`注解设置测试前的准备工作,使用`@Test`注解定义测试方法,并在其中使用EasyMock的API进行模拟和验证。 总之,EasyMock 3.2 提供了一个强大而灵活的模拟工具,帮助开发者编写高质量的单元测试,...
2. **创建模拟对象**:使用Easymock的`createMock`或`createNiceMock`方法创建模拟对象。 3. **设置预期**:通过`expect`方法设定模拟对象的方法调用预期。 4. **启动测试**:调用`replay`方法开始执行模拟。 5. ...
这篇文档将深入探讨 EasyMock 的使用方法和原理,以便更好地理解和应用这一工具。 首先,让我们理解 EasyMock 的核心概念。EasyMock 允许开发者创建“mock”对象,这些对象在测试时代替实际依赖,以便我们可以控制...
为了部署和使用EasyMock,你需要将源码导入一个支持Java开发的IDE(如Eclipse或IntelliJ IDEA),然后按照提供的说明进行编译和配置。 在部署流程中,一般步骤如下: 1. 安装Node.js:访问官网下载Windows安装包,...
2. 回放(Replay):EasyMock 根据录制的行为,模拟 Mock 对象的行为。 3. 验证(Verify):EasyMock 验证 Mock 对象的行为是否符合预期。 EasyMock 的优点 使用 EasyMock,可以避免手动构造 Mock 对象的额外编码...
4. **回调方法**:除了预定义返回值,Easymock还支持使用`EasyMock.callback()`方法定义回调函数,使得mock对象的方法调用可以执行自定义逻辑。 5. **异常测试**:可以设置mock对象抛出预期的异常,以便测试错误...
5. **验证行为**:测试完成后,使用`EasyMock.verify()`方法检查模拟对象是否按照预期被调用了。这有助于确保你的代码正确地使用了模拟对象。 ```java EasyMock.verify(myServiceMock); ``` 6. **清理资源**:...
2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象,如`MyInterface mockObject = EasyMock.createMock(MyInterface.class);` 3. **设置期望**:利用`EasyMock.expect()`方法设置模拟对象的行为,...
本文将深入探讨EasyMock的使用方法及其工作原理,帮助开发者更好地理解和运用这一工具。 ### 1. EasyMock简介 EasyMock 是一个轻量级的模拟框架,它的核心功能是为测试提供假对象(mock objects),这些对象可以...