JMock资料本来就少, JMock2.0更是少之又少,官方那可怜巴巴的几个连接,似乎并不能说明一个简单的例子应该怎么运行。
我结合官方那个例子,简单的写了一个最简单的JMock实例。
废话少说,先把jar包加上,我试了一下,下面似乎是必须的:
jmock.jar, jmock-junit.jar, junit.jar, hamcrest-core.jar, hamcrest-library.jar
配置好了,可以开始玩Mock了。与Spring相似的,Mock也有两种代理机制,一种是面向接口的,一种是面向普通Java类的(需要cglib.jar支持)。我这里使用的是面向接口的。先写一个简单的接口吧:
java 代码
- public interface IUserService {
- public String sayHello(String str);
-
- }
实现也非常简单:
java 代码
- public class UserServiceImpl implements IUserService {
- public String sayHello(String str) {
- return str;
- }
- }
开始测试吧:
java 代码
- import junit.framework.TestCase;
-
- import org.jmock.Expectations;
- import org.jmock.Mockery;
-
- public class UserServiceTest extends TestCase {
- Mockery context = new Mockery();
- IUserService userService = null;
-
- protected void setUp() {
- userService = context.mock(IUserService.class);
- }
-
- public void testSayHello() {
- final String message = "HelloSuperLeo";
- context.checking(new Expectations() {
- {
- one(userService).sayHello("HelloSuperLeo");
- will(returnValue(message));
- }
- });
-
-
- String result = userService.sayHello("HelloSuperLeo");
-
-
-
-
- assertSame(result, message);
-
- }
-
- }
在JMock2.0后, Mock已经改成Mockery了, 所以大家要注意这个区别。
上面的代码讲的就是一件事: 模拟当传入参数(这里是:"HelloSuperLeo")时,返回预先的值(这里是:message="HelloSuperLeo")。然后运行要测试的方法(这里是:userService.sayHello(String str))。
Mock要解决的问题在这个简单的例子里似乎并不能体现出来,不过,先让大家知道怎么用才是最重要的吧。
分享到:
相关推荐
文档提到在JMock2.0之后,Mock的创建已经从旧的方式转变为使用Mockery类。因此,在使用JMock进行单元测试时,需要特别注意这个版本间的差异。这个变化意味着需要根据最新版本的文档来编写测试代码。 5. Mock对象的...
**Jmock2.6 Jar包**是Java编程领域中用于单元测试的重要库,它提供了模拟对象的功能,使得开发者能够在测试代码时对复杂依赖关系进行控制和隔离。在本文中,我们将深入探讨Jmock2.6的核心特性、使用场景以及如何在...
**JMock 深度解析** JMock 是一个流行的开源测试框架,专为Java开发者设计,用于模拟对象的行为,特别是在单元测试中。它允许程序员在不依赖真实对象的情况下测试代码,提高了测试的效率和隔离性。这篇详尽的讨论将...
《jMock 2.5.1:模拟与测试的艺术》 在软件开发中,单元测试是确保代码质量的重要环节,而模拟(Mocking)技术则是单元测试中的关键工具。jMock,作为Java平台上的一个开源模拟框架,为开发者提供了一种高效、灵活...
《jMock 2.5.1:模拟对象与单元测试的艺术》 jMock是一个强大的Java模拟框架,它在软件开发的单元测试阶段扮演着至关重要的角色。jMock 2.5.1是该框架的一个版本,它提供了丰富的功能,帮助开发者创建虚拟对象,...
【jmock-2.6.0-jars】这个压缩包主要包含了`jmock`库的2.6.0版本的jar文件以及相关的源代码。`jmock`是Java平台上的一个模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以便能够隔离测试并精确地指定期望...
《JMock Cookbook资源整合》是关于Java测试领域中JMock库使用的详细指南,旨在帮助开发者更好地理解和运用这个强大的模拟框架。JMock是一个用于Java应用程序单元测试的工具,它允许程序员模拟对象的行为,以便在孤立...
**JMock 概述** JMock 是一个Java平台上的单元测试框架,专门用于模拟对象,以便在测试过程中控制和验证对象的行为。它基于EasyMock库,但提供了更强大的功能,尤其是对于处理复杂交互和顺序的场景。JMock使得...
《JMock:模拟对象软件测试工具的深度解析》 在软件开发过程中,单元测试是确保代码质量的关键步骤。为了有效地进行单元测试,我们常常需要模拟(mock)对象,以便隔离测试目标并控制其行为。这就是JMock的作用所在...
《JMock 1.2.0 - 模拟与测试的艺术》 JMock 是一个流行的 Java 开源库,专门用于创建和管理模拟对象,以便在单元测试中隔离被测代码。这个压缩包“jmock-1.2.0-jars.rar”包含的是 JMock 1.2.0 版本的 jar 文件,它...
首先,你需要在项目中引入 CGLIB 的依赖,这里提供的 `cglib-full-2.0.jar` 和 `jmock-cglib-1.0.1.jar` 文件包含了 CGLIB 的相关组件。同时,也需要包含 JMock 的库,如 `jmock-1.1.0.jar`。 以下是如何使用 JMock...
**JMock使用文档** 在Java开发中,单元测试是一项至关重要的任务,它能确保代码的质量和可维护性。JMock是一款强大的模拟框架,专门用于Java应用程序的单元测试,特别是对于那些依赖于复杂外部接口或者服务的类。本...
而JMock和EasyMock则是两种广泛使用的Java单元测试框架,它们允许开发者模拟对象的行为和交互,以便于测试复杂的系统。本资源包含JMock 2.5.1和EasyMock 3.0的库文件,使得开发者在进行单元测试时无需再四处寻找相关...
Maven-Central / jmock / jmock-cglib 1.2.0 Maven-Central / org.apache.activemq / activemq-ra 5.2.05.1.0 Maven-Central / org.apache.maven.shared / maven-dependency-tree 1.21.1 Maven-Central / org.apache...
will(returnValue(2.0)); }}); Calculator calculator = new Calculator(); double result = calculator.add(number1, number2); assertEquals(3.0, result, 0.001); } } ``` 在这个例子中,我们模拟了两个 ...
本文将深入探讨JMock库,它是一个强大的Java模拟框架,常用于单元测试,以及如何结合Spring测试模块进行高效测试。 JMock是一个用于创建和验证对象行为的模拟框架,它允许开发者在测试中模拟对象的行为,而不是依赖...
`jmock-2.6.0-RC2-javadoc.zip`和`jmock-2.5.1-javadoc.zip`包含的是`jmock`的API文档,可以帮助开发者理解和使用其API。`jmock-2.6.0-RC2-jars.zip`和`jmock-2.5.1-jars.zip`则包含了相应的库文件,可以直接在项目...
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 ...