博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jMock辅助单元测试
阅读量:4192 次
发布时间:2019-05-26

本文共 1376 字,大约阅读时间需要 4 分钟。

使用jMock辅助单元测试

作者:冰云

时间:2004-04-16
联系:
icecloud(AT)sina.com
Blog

jMock是Junit的一个增强库。源于。

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有兴趣,请访问。 你可以下载最新的jMock包来使用,可能在接口上有些不同,但基本的调用已经定型不变(如上)。

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

 

    

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

你可能感兴趣的文章
阿里五年Java程序员的总结,献给还在迷茫中的你!
查看>>
程序员身上有异味,同事为什么都不会直接告诉他?
查看>>
大数据折射算法“歧视”?王思聪微博抽奖113位,仅有一位男性
查看>>
Java、C、C+ +、PHP、Python分别用来开发什么?一篇文章告诉你!
查看>>
Linux-SHELL常用命令
查看>>
Linux-网络运维基础
查看>>
Verilog编程网站学习——门电路、组合电路、时序电路
查看>>
android——学生信息显示和添加
查看>>
Android——ImageSwitcher轮流显示动画
查看>>
Android——利用手机端的文件存储和SQLite实现一个拍照图片管理系统
查看>>
图像调优1:清晰度相关参数MTF,SFR,MTF50,MTF50P 以及TVL的概念以及换算说明
查看>>
图像调优3: CCM参数的标定
查看>>
最长回文子串(Go,LeetCode)
查看>>
.Net Remoting配置文件的用法
查看>>
Tomcat性能调整优化
查看>>
利用SQL Server 2005减轻生产服务器优化负荷
查看>>
优化MYSQL服务器
查看>>
Exchange磁盘性能优化
查看>>
Apusic应用服务器的性能调节_JVM优化
查看>>
Apache重负荷服务器应如何优化?
查看>>