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

JMock单元测试

阅读更多
关键字: JMock, 单元测试
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");   
  
        // 测试失败   
        // String result = userService.sayHello("fdjsasdfa");   
  
        assertSame(result, message);   
  
    }   
  
}   

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

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

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



分享到:
评论

相关推荐

    JMOCK使用文档

    - `JMock单元测试.doc`:可能包含具体的JMock使用示例和详细解释。 - `Jmock学习文档.docx`:更深入的JMock教程,可能包括高级用法和最佳实践。 - `Junit使用.ppt`:可能是一个关于JUnit基本用法和如何与JMock...

    jmock-1.0.1-src.zip_单元测试

    不管是测试驱动开发或者是其它的开发模式,都会需要对代码进行单元测试,对于关联依赖关系少或者比较简单的类来说,直接使用JUnit就可以轻松的完成测试工作,但是对于关联到其它比较复杂的类或对运行环境有要求的类...

    软件测试资料集合,jtest,jmock

    本资源包包含了多个与单元测试相关的工具和框架,特别是与`jtest`和`jmock`相关的材料。 **jtest** `jtest`是一款强大的单元测试工具,特别适合Java开发者。它提供了一个集成的测试环境,帮助开发者编写、运行和...

    jmock-2.6.0-jars

    `jmock`是Java平台上的一个模拟框架,它允许开发者在单元测试中创建和控制对象的行为,以便能够隔离测试并精确地指定期望的交互。下面我们将深入探讨`jmock`的关键概念和功能。 ### 1. 模拟框架概述 `jmock`属于...

    jmock-2.5.1-javadoc

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

    Jmock2.6 jar包

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

    jmock2.5.1.zip

    总结来说,jMock 2.5.1是一个强大的模拟工具,它使开发者能够在单元测试中有效地控制和验证对象行为,提高测试覆盖率和代码质量。通过阅读jMock 2.5.1.chm的帮助文档,开发者可以深入理解并掌握这一工具,从而在实践...

    jMock基本使用方法

    jMock 是一个流行的 Java 框架,用于支持单元测试,特别是对于模拟对象(mock objects)的支持。通过 jMock,开发人员可以轻松地创建模拟对象来替代实际的对象依赖,从而在单元测试中避免与外部系统的交互,确保测试...

    单元测试文档

    本文将深入探讨如何利用`jmock`这个强大的工具来编写高效的单元测试,以及它如何促进Test Driven Development(TDD)和敏捷开发。 `jmock`是一个Java库,它提供了一种创建模拟对象(mock objects)的方法,这些模拟...

    jmock cookbook 资源整合

    JMock是一个用于Java应用程序单元测试的工具,它允许程序员模拟对象的行为,以便在孤立的环境中测试代码。在这个资源包中,包含了英文版的《JMock_CookBook_EN.pdf》和中文版的《JMock_CookBook_CN.pdf》,为不同...

    jmock jar包及doc文档

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

    JMOCK 帮助 网页 文档

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

    jmock-1.2.0-jars.zip

    总之,JMock是Java开发者进行单元测试的重要工具,它通过模拟对象的创建和行为控制,帮助我们编写出更健壮、更可靠的代码。结合jmock-core和jmock-cglib这两个库,我们可以应对各种复杂的测试场景,提升测试的质量和...

    jmock2.5.1和easymock3.0

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

    JMOCK-2.6.0

    《JMOCK-2.6.0:强化Java单元测试的艺术》 在软件开发的世界里,测试是确保代码质量不可或缺的一环。而JMOCK,作为一款强大的Java模拟框架,正是为了解决这一问题应运而生。"JMOCK-2.6.0"是一个专门用于项目测试的...

    JMock

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

Global site tag (gtag.js) - Google Analytics