`
kyo100900
  • 浏览: 639458 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JMock 2.0 初探

阅读更多

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 代码
  1. public interface IUserService {   
  2.     public String sayHello(String str);   
  3.   
  4. }   

实现也非常简单:

java 代码
  1. public class UserServiceImpl implements IUserService {   
  2.     public String sayHello(String str) {   
  3.         return str;   
  4.     }   
  5. }   

开始测试吧:

java 代码
  1. import junit.framework.TestCase;   
  2.   
  3. import org.jmock.Expectations;   
  4. import org.jmock.Mockery;   
  5.   
  6. public class UserServiceTest extends TestCase {   
  7.     Mockery context = new Mockery();   
  8.     IUserService userService = null;   
  9.   
  10.     protected void setUp() {   
  11.         userService = context.mock(IUserService.class);   
  12.     }   
  13.   
  14.     public void testSayHello() {   
  15.         final String message = "HelloSuperLeo";   
  16.         context.checking(new Expectations() {   
  17.             {   
  18.                 one(userService).sayHello("HelloSuperLeo");   
  19.                 will(returnValue(message));   
  20.             }   
  21.         });   
  22.   
  23.         // 测试成功   
  24.         String result = userService.sayHello("HelloSuperLeo");   
  25.   
  26.         // 测试失败   
  27.         // String result = userService.sayHello("fdjsasdfa");   
  28.   
  29.         assertSame(result, message);   
  30.   
  31.     }   
  32.   
  33. }   

在JMock2.0后, Mock已经改成Mockery了, 所以大家要注意这个区别。

上面的代码讲的就是一件事: 模拟当传入参数(这里是:"HelloSuperLeo")时,返回预先的值(这里是:message="HelloSuperLeo")。然后运行要测试的方法(这里是:userService.sayHello(String str))。

 Mock要解决的问题在这个简单的例子里似乎并不能体现出来,不过,先让大家知道怎么用才是最重要的吧。

 

分享到:
评论
3 楼 miaodezhi 2009-05-21  
JMock让人十分不爽的是要求编程什么都要面向接口,比如你要是类中调用了另一个类的一个静态方法,而静态方法里面的某些调用又是需要mock的,这个时候写测试代码你就必须晓得那个静态方法的具体实现
2 楼 Emy 2008-05-03  
1 楼 wj_526 2008-03-07  

相关推荐

    JMock单元测试

    文档提到在JMock2.0之后,Mock的创建已经从旧的方式转变为使用Mockery类。因此,在使用JMock进行单元测试时,需要特别注意这个版本间的差异。这个变化意味着需要根据最新版本的文档来编写测试代码。 5. Mock对象的...

    Jmock2.6 jar包

    **Jmock2.6 Jar包**是Java编程领域中用于单元测试的重要库,它提供了模拟对象的功能,使得开发者能够在测试代码时对复杂依赖关系进行控制和隔离。在本文中,我们将深入探讨Jmock2.6的核心特性、使用场景以及如何在...

    JMock

    **JMock 深度解析** JMock 是一个流行的开源测试框架,专为Java开发者设计,用于模拟对象的行为,特别是在单元测试中。它允许程序员在不依赖真实对象的情况下测试代码,提高了测试的效率和隔离性。这篇详尽的讨论将...

    jmock2.5.1.zip

    《jMock 2.5.1:模拟与测试的艺术》 在软件开发中,单元测试是确保代码质量的重要环节,而模拟(Mocking)技术则是单元测试中的关键工具。jMock,作为Java平台上的一个开源模拟框架,为开发者提供了一种高效、灵活...

    jmock-2.5.1-javadoc

    《jMock 2.5.1:模拟对象与单元测试的艺术》 jMock是一个强大的Java模拟框架,它在软件开发的单元测试阶段扮演着至关重要的角色。jMock 2.5.1是该框架的一个版本,它提供了丰富的功能,帮助开发者创建虚拟对象,...

    jmock-2.6.0-jars

    【jmock-2.6.0-jars】这个压缩包主要包含了`jmock`库的2.6.0版本的jar文件以及相关的源代码。`jmock`是Java平台上的一个模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以便能够隔离测试并精确地指定期望...

    jmock cookbook 资源整合

    《JMock Cookbook资源整合》是关于Java测试领域中JMock库使用的详细指南,旨在帮助开发者更好地理解和运用这个强大的模拟框架。JMock是一个用于Java应用程序单元测试的工具,它允许程序员模拟对象的行为,以便在孤立...

    JMOCK 帮助 网页 文档

    **JMock 概述** JMock 是一个Java平台上的单元测试框架,专门用于模拟对象,以便在测试过程中控制和验证对象的行为。它基于EasyMock库,但提供了更强大的功能,尤其是对于处理复杂交互和顺序的场景。JMock使得...

    jmock-1.2.0-jars.zip

    《JMock:模拟对象软件测试工具的深度解析》 在软件开发过程中,单元测试是确保代码质量的关键步骤。为了有效地进行单元测试,我们常常需要模拟(mock)对象,以便隔离测试目标并控制其行为。这就是JMock的作用所在...

    jmock-1.2.0-jars.rar

    《JMock 1.2.0 - 模拟与测试的艺术》 JMock 是一个流行的 Java 开源库,专门用于创建和管理模拟对象,以便在单元测试中隔离被测代码。这个压缩包“jmock-1.2.0-jars.rar”包含的是 JMock 1.2.0 版本的 jar 文件,它...

    Jmock Mock 没有接口的类

    首先,你需要在项目中引入 CGLIB 的依赖,这里提供的 `cglib-full-2.0.jar` 和 `jmock-cglib-1.0.1.jar` 文件包含了 CGLIB 的相关组件。同时,也需要包含 JMock 的库,如 `jmock-1.1.0.jar`。 以下是如何使用 JMock...

    JMOCK使用文档

    **JMock使用文档** 在Java开发中,单元测试是一项至关重要的任务,它能确保代码的质量和可维护性。JMock是一款强大的模拟框架,专门用于Java应用程序的单元测试,特别是对于那些依赖于复杂外部接口或者服务的类。本...

    jmock2.5.1和easymock3.0

    而JMock和EasyMock则是两种广泛使用的Java单元测试框架,它们允许开发者模拟对象的行为和交互,以便于测试复杂的系统。本资源包含JMock 2.5.1和EasyMock 3.0的库文件,使得开发者在进行单元测试时无需再四处寻找相关...

    jmock-1.2.0.jar

    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...

    maven+jmock

    will(returnValue(2.0)); }}); Calculator calculator = new Calculator(); double result = calculator.add(number1, number2); assertEquals(3.0, result, 0.001); } } ``` 在这个例子中,我们模拟了两个 ...

    jmock jar包及doc文档

    本文将深入探讨JMock库,它是一个强大的Java模拟框架,常用于单元测试,以及如何结合Spring测试模块进行高效测试。 JMock是一个用于创建和验证对象行为的模拟框架,它允许开发者在测试中模拟对象的行为,而不是依赖...

    软件测试资料集合,jtest,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.6.0-RC2

    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 ...

Global site tag (gtag.js) - Google Analytics