`
冰云
  • 浏览: 142673 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用jMock辅助单元测试

阅读更多

使用jMock辅助单元测试

作者:冰云
时间:2004-04-16
联系:icecloud(AT)sina.com
Bloghttp://icecloud.51.net

jMock是Junit的一个增强库。源于http://www.jmock.org

jMock简单易用,非常适合TDD中的Mock测试模式

首先我们来看一段简单测试代码

package name.nona.test.jmock;

import java.sql.SQLException;

import java.sql.Statement;

import org.jmock.Mock;

import org.jmock.MockObjectTestCase;

public class TestUsageOfJmock extends MockObjectTestCase {

    public void testDatabaseUseage() throws SQLException{

        Mock mockStmt = new Mock(Statement.class);

        String sql = "select * from test";

 

        mockStmt.expect(once()).method("execute")

.with(eq(sql)).will(returnValue(false));

        Statement stmt = (Statement) mockStmt.proxy();

        assertFalse(stmt.execute(sql));

      }

}

可以看到,上面是制作了一个假的(Mock)的Statement对象,

通过对这个对象的execute操作,返回一个false值。

 

其中,关键的语句是

mockStmt.expect(once()).method("execute").with(eq(sql)).will(returnValue(false));

解释如下:

       expect: 期待的执行次数,可以有 onceatLeastOnce()notCalled()三种。

       method 期待调用的方法名,这里是execute

       with 方法需要的参数,如果没有的话就不用写with,直接will

       will 返回值,没有就不写啦

       其中的once, eq, returnValue都是继承自MockObjectTestCase的方法。

 

    执行后,Green,成功。尝试两次调用 assertFalse(stmt.execute(sql));  提示错误。

    

     jMock是通过CGLIB的DynamicProxy来实现的mock功能。

 

   

    注:本文仅是对jMock的一个简单介绍,没有太多内容。更多的东西需要你自己来探索,例如jMock的设计很有意思,使用了ValueObject模式等等。
   
如果对Jmock有兴趣,请访问http://www.jmock.org。 你可以下载最新的jMock包来使用,可能在接口上有些不同,但基本的调用已经定型不变(如上)。

    1.0stable的版本正在开发中,帮助很少,通过看JavaDoc和testCase你可以了解到最新的用法。

 

    


版权声明:
本文由冰云完成,首发于CSDN,作者保留中文版权。
未经许可,不得使用于任何商业用途。
欢迎转载,但请保持文章及版权声明完整。
如需联络请发邮件:icecloud(AT)sina.com
Blog:http://icecloud.51.net
 



分享到:
评论

相关推荐

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

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

    maven+jmock

    标题 "maven+jmock" 暗示了我们要讨论的是如何在 Maven 项目中使用 JMock 进行单元测试。Maven 是一个流行的构建自动化工具,用于管理项目的构建、依赖和文档,而 JMock 是一个 Java 代码模拟库,允许开发者在测试中...

    junit学习文档.doc

    使用JUnit进行单元测试,不仅可以帮助发现代码中的错误,还能作为重构的辅助工具,确保改动不会破坏现有功能。此外,持续集成工具通常需要测试结果,JUnit生成的XML格式报告能够方便地与其他工具集成,进一步提升了...

    powermock 资料_杂

    然而,在没有模拟框架辅助的情况下,编写单元测试可能是一项耗时且繁琐的任务,需要大量的准备工作来构建测试环境。Mockito等框架通过模拟对象的交互,大大简化了这一过程,使得开发者能够更加专注于测试逻辑本身,...

    GMock——groovy下的mock工具

    ### 使用 GMock 进行单元测试 1. **安装和引入**:在给定的压缩包中,`gmock-0.8.0.jar` 是 GMock 的库文件,将其添加到项目的类路径中,即可开始使用。 2. **创建 Mock 类**:首先,我们需要为要模拟的类创建一个...

    Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架

    总的来说,Jmockdata是Java开发中一个强大的辅助工具,它简化了单元测试中的数据准备环节,使测试更加灵活和高效。通过熟练掌握和运用Jmockdata,开发者可以更好地进行测试驱动开发,提高代码质量和软件的稳定性。

    Mock

    5. **实际案例**:通过具体的代码示例,演示如何使用Mock进行单元测试。 6. **最佳实践**:提供关于何时、何地以及如何有效地使用Mock的建议。 7. **常见问题与解决方案**:列出在使用Mock过程中可能遇到的问题及...

    毕业设计之Java+swing+mysql实现的学生选课系统项目源码.zip

    JUnit是Java常用的单元测试框架,而TestNG或JMock等工具可以用于更复杂的集成测试。 10. **界面设计与用户体验**: Swing组件的布局管理和定制化能力使得开发者可以设计出符合用户习惯的界面。注意颜色搭配、字体...

    RPN-calculator

    jMock是一个Java单元测试框架,用于创建和执行模拟对象,特别是在进行行为验证时。在RPN计算器的开发过程中,jMock可能被用来模拟与模型交互的外部依赖,比如输入设备或者存储结果的地方。通过模拟这些依赖,开发者...

Global site tag (gtag.js) - Google Analytics