jmock可以方便的对接口和类做mock
在这里采用的是junit 4.4 和jmock 2.2
注:eclipse3.3带的junit是4.3的,请下载新的
首先看类的,当然,这里示意的只是使用jmock的方法,
真正做测试的时候可不要这么干啊
public class Foo {
public String hello(){
return "hello";
}
}
@RunWith(JMock.class)
public class FooTest {
Mockery context = new JUnit4Mockery() {
{
//默认实现是对接口的,因为这里要对类mock,所以加上这句
setImposteriser(ClassImposteriser.INSTANCE);
}
};
@Test
public void testFoo() throws Exception {
final Foo foo = context.mock(Foo.class);
context.checking(new Expectations(){
{
//one表示foo对象的hello方法调用一次,will返回"foo",好理解吧
one(foo).hello(); will(returnValue("foo"));
//可以再来一句,表示连续调用返回不同的结果
//one(foo).hello(); will(returnValue("xxx"));
}
//可以定义多个block
{
one(foo).hello(); will(returnValue("xxx"));
}
});
assertEquals("foo", foo.hello());
assertEquals("xxx", foo.hello());
//如果有没有使用的mock,测试不通过
context.assertIsSatisfied();
}
}
如果想要表示连续调用产生不同的结果,上面的写法会烦一些
可以采用这种方法
context.checking(new Expectations() {
{
atLeast(1).of(foo).hello(); will(onConsecutiveCalls(
returnValue("foo"),
returnValue("xx")
));
}
});
分享到:
相关推荐
2. **JMock的核心概念** - **Expectations(期望)**:在测试中定义模拟对象的行为,指定何时以及如何响应方法调用。 - **Matchers(匹配器)**:用于指定方法参数的预期值,如`anyInt()`表示任何整数。 - **...
jMock 2: Java 5 and above. Stable: 2.5.1 Binary JARs (includes the source to let IDEs provide context-sensitive help) Javadocs Unstable: 2.6.0-RC2 Binary JARs (includes the source to let IDEs ...
### jMock基本使用方法 #### 一、简介 jMock 是一个流行的 Java 框架,用于支持单元测试,特别是对于模拟对象(mock objects)的支持。通过 jMock,开发人员可以轻松地创建模拟对象来替代实际的对象依赖,从而在...
2. **创建模拟对象**:使用`Mockery`类创建一个上下文,然后在这个上下文中定义你要模拟的对象。 3. **定义期望**:在测试方法中,使用`expectations`块定义模拟对象的期望行为。 4. **运行测试**:调用`context....
2. **动态行为定义**:在 jMock 中,你可以动态地设置模拟对象的行为,比如返回特定的值,抛出异常,或者记录方法调用的次数。这种灵活性使得测试能够覆盖各种可能的执行路径。 3. **期望验证**:jMock 的一个重要...
jMock 2.5.1.chm文件是一个帮助文档,包含了jMock框架的详细使用指南。通过这个文档,开发者可以学习如何创建和配置模拟对象,设置和验证期待,以及如何在JUnit等测试框架中集成jMock。 首先,创建模拟对象通常需要...
《JMock Cookbook资源整合》是关于Java测试领域中JMock库使用的详细指南,旨在帮助开发者更好地理解和运用这个强大的模拟框架。JMock是一个用于Java应用程序单元测试的工具,它允许程序员模拟对象的行为,以便在孤立...
例如,可以使用JMOCK的expectations来定义对象行为,然后在JUNIT的@Test注解的测试方法中验证这些预期。这种结合使得测试代码清晰、可读性强,同时也简化了测试的编写和维护。 JMOCK-2.6.0版本可能包含以下改进和...
2. **期望(Expectations)**:这是JMock的核心,它定义了模拟对象在测试期间应该如何被调用。你可以设定方法调用的顺序、参数、返回值甚至是抛出的异常。 3. **验证(Verification)**:在测试结束时,JMock会检查...
要在项目中使用JMock,首先需要添加相应的依赖。对于Maven项目,可以在pom.xml文件中加入以下依赖: ```xml <groupId>org.jmock <artifactId>jmock-junit4 <version>2.8.4 <scope>test ``` 同时,由于JMock...
本文将深入探讨jMock的核心概念、用法以及如何与JUnit结合使用。 一、jMock简介 jMock是基于Java的模拟库,它的设计目标是使单元测试变得更加简洁和清晰。传统的单元测试往往依赖于真实对象,但这种方式可能导致...
通过阅读这些文档,你可以更好地了解如何有效地使用`jmock`,解决你在测试过程中遇到的问题。 总结来说,`jmock-2.6.0-jars`是一个包含`jmock`库的压缩包,它提供了进行交互式单元测试的工具,特别是对于那些依赖于...
2. **JMock 文档**: `jmock-2.5.1-javadoc.zip` 文件提供了JMock的API文档,程序员可以通过查看这份文档了解如何使用JMock的各种类、方法和接口。Javadoc是一种标准格式,它将源代码中的注释转换为易于阅读的HTML...
6. **定义期望(Expectations)**:使用`Expectations`类来指定模拟对象的行为,例如期望`subscriber`的`receive`方法被调用一次,并传入特定的消息。在JUnit 3和4中,我们使用`oneOf(subscriber).receive(message)`...
1. **创建模拟对象**:使用`Mockery`类来创建模拟对象,如`Mockery context = new Mockery(); MyInterface mock = context.mock(MyInterface.class);` 2. **定义行为**:通过`expect`方法来设定模拟对象的预期行为...
而JMock和EasyMock则是两种广泛使用的Java单元测试框架,它们允许开发者模拟对象的行为和交互,以便于测试复杂的系统。本资源包含JMock 2.5.1和EasyMock 3.0的库文件,使得开发者在进行单元测试时无需再四处寻找相关...
在 JUnit 中,你可以使用 `jmock-junit3` 或 `jmock-junit4` 包,它们提供了一个 JUnit Rule,使得在测试类中使用 JMock 更加方便。 6. **版本信息** 这个压缩包中的 "jmock-1.2.0-jars" 提供的是 JMock 1.2.0 ...
1. **隔离测试**:使用JMock尽量减少对外部系统的依赖,确保每个测试只关注单一的功能点。 2. **清晰的期望**:为模拟对象设定明确的期望,使测试意图易于理解。 3. **合理使用模拟**:并非所有对象都需要模拟,...
为了结合`FactoryBean`和Jmock,我们需要在`FactoryBean`的实现中使用Jmock来动态创建模拟对象。以下是一个简单的示例: ```java public class MockingFactoryBean implements FactoryBean<Object> { private ...
标题 "maven+jmock" 暗示了我们要讨论的是如何在 Maven 项目中使用 JMock 进行单元测试。Maven 是一个流行的构建自动化工具,用于管理项目的构建、依赖和文档,而 JMock 是一个 Java 代码模拟库,允许开发者在测试中...