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

JMock简单入门

阅读更多

先说说JMock是用来干什么的,我觉得最简单的说,他就是用来模拟一个类,即使这个类根本没有实现。这个跟他的名字就比较像了。

举个例子吧,有一个Subscripter的类,他没有实现只有接口,我们有一个Publisher的类,这个类的测试,要用到这个传说中的Subscripter类,这个时候在没有实现,或者想减少测试干扰的时候,我们可以模拟Subscripter这个类。废话少说,实现这个例子吧:

 

1.建立一个工程,然后下载jmock,把如下的库加载到工程中(这里使用的是junit4的方法。)

  • jmock-2.5.1.jar
  • hamcrest-core-1.1.jar
  • hamcrest-library-1.1.jar
  • jmock-junit3-2.5.1.jar
  • jmock-junit4-2.5.1.jar

2.要有Subscripter的接口定义:

 

interface Subscriber {
    void receive(String message);
}

 

3.来实现我们的junit测试吧:

注意:

使用JMock模拟类的条件:

  1、要有无参数的构造器;

  2、构造器是public;

 

@RunWith(JMock.class)
class PublisherTest {
    Mockery context = new JUnit4Mockery();
    
    @Test 
    public void oneSubscriberReceivesAMessage() {
        // set up
        final Subscriber subscriber = context.mock(Subscriber.class);

        Publisher publisher = new Publisher();
        publisher.add(subscriber);
        
        final String message = "message";
        
        // expectations
        context.checking(new Expectations() {{
            oneOf (subscriber).receive(message);
        }});

        // execute
        publisher.publish(message);
    }
}

 

这里说明一下:

 final Subscriber subscriber = context.mock(Subscriber.class);

建立了一个虚拟的subscriber的类,然后替代它的方法:

 context.checking(new Expectations() {{
            oneOf (subscriber).receive(message);
        }});

看看执行效果,是不是已经被替代了。步骤就是这么简单。

 

分享到:
评论

相关推荐

    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

    以下是一个简单的示例: ```java import static org.jmock.Expectations.*; import org.junit.Test; import org.jmock.Mockery; public class MyTest { private Mockery context = new Mockery(); @Test ...

    jmock cookbook 资源整合

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

    jmock-2.6.0-jars

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

    JMOCK 帮助 网页 文档

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

    jmock-1.2.0-jars.rar

    JMock 支持 Java 5 及以上版本,它通过提供简洁的 API 和强大的表达式语言,使编写模拟对象变得简单。 2. **模拟对象** 在 JMock 中,模拟对象是类的一个实例,它代替了真实对象在测试中的角色。你可以设置模拟...

    jmock-1.2.0-jars.zip

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

    jmock2.5.1和easymock3.0

    EasyMock是另一个流行的模拟框架,它的设计目标是使单元测试变得更加简单。EasyMock 3.0版本引入了一些关键特性: 1. **静态导入**:通过静态导入EasyMock的方法,可以在测试代码中更简洁地创建和配置模拟对象。 2....

    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使用文档

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

    jmock jar包及doc文档

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

    jmock-1.0.1.jar

    jmock-1.0.1.jar jmock-1.0.1.jar

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

    软件测试资料集合,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`则包含了相应的库文件,可以直接在项目...

    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.

Global site tag (gtag.js) - Google Analytics