`
kyo100900
  • 浏览: 633616 次
  • 性别: 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 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 ...

    jmock2.5.1.zip

    jmock2.5.1.zip

    Jmock2.6 jar包

    Jmock2.6 jar包

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

    jmock-2.5.1-javadoc

    jmock可以模拟对象,常用于单元测试,与junit配合使用 jmock-2.5.1-javadoc

    Jmock Mock 没有接口的类

    Jmock Mock 没有接口的类 很方便使用

    jmock-2.6.0-jars

    jmock jar和源码

    JMOCK 帮助 网页 文档

    JMOCK 帮助 网页 文档 在网上找的一些bolg里的文档 JMOCK 帮助 网页 文档 在网上找的一些bolg里的文档

    jmock-1.0.1.jar

    jmock-1.0.1.jar jmock-1.0.1.jar

    Jmock学习手册

    Jmock学习手册,让你更快学习Jmock。。

    jmock2.5.1和easymock3.0

    JMock2.5.1和EasyMock3.0以及一些JUnit单元测试所需的jar,让你使用JMock和EasyMock时不用到处找相关的jar。

    jmock2.5.1

    JMock is a library that supports test-driven development1 of Java2 code with mock objects3. Mock objects help you design and test the interactions between the objects in your programs.

    jmock-1.2.0-jars.rar

    jmock-1.2.0-jars.rar

    jmock2.5基本教程—终结版.doc

    jmock2.5基本教程目录第0章 概述第1章 jmock初体验第2章 期望第3章 返回值第4章 参数匹配第5章 指定方法调用次数第6章 指定执行序列第7章 状态机第0章 概述

    jmock-2.5.1-jars.zip

    jMock利用mock objects思想来对Java code进行测试。jMock具有以下特点:容易扩展,让你快速简单地定义mock objects,因此不必打破程序间的关联,让你定义灵活的超越对象之间交互作用而带来测试局限,减少你测试地脆弱...

    JMock

    NULL 博文链接:https://tristan-s.iteye.com/blog/1750265

    JMOCK使用文档

    这个是几篇关于如何使用JMOCK对java代码测试,如果实在不清楚,也可咨询 445054051

    jmock学习文档

    jmock学习文档,模拟对象技术,jMock 可以和既有的其他测试框架,如JUnit,很好地整合在一起,共同使用。

    jmock-2.6.0帮助文档chm格式

    jmock的chm格式文档。版本2.6.0

    JMock 2.6.1所有源代码

    Mock测试主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JDBC中的ResultSet对象),从而使测试顺利进行...JMock是基于JAVA编写的Mock测试框架。

Global site tag (gtag.js) - Google Analytics