动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.步入J2EE架构和过程基础教程(1).
.Java 理论与实践:嗨,我的线程到.
.一些非常有用的JAVA常用方法(1).
.在Java中实现回调过程.
.大道至简 Java 23种模式一点就通.
.Hibernate自关联关系.
.在Eclipse 3.1体验J2SE 5.0新特性.
.robbin 的 HttpSession 总结.
.逻辑“非”运算符 (!).
.实现Hibernate分页查询原理解读.
.servlet的一些特点.
.Struts 的安装、配置与运行.
.J2ME编程实例---之数字键的测试.
.两种特殊的Java容器类List和Set分.
.Java中的Stack.
.j2ee性能调优之最小化资源压力测.
.Java技巧101applet间通信的替代方.
.我的java学习经验谈2.
.Java 繁体中文处理完全攻略(二).
.将数据库操作封装到Javabean.

利用 easymock 测试 jdbc 分析

发表日期:2008-1-5 |


    虽然以前用easymock测试过Dao,但那些Dao的实现,要么就hibernate,要么就用spring,而这两个框架的执行正确与否我们是不用关心的。JDBC是不是也这样测试了。答案是肯定的。
      这几天要用存储过程跟jdbc来做个项目,想想也有好长一段时间没用过JDBC来做项目了。该复习复习了。
      前阵子学了easymock,真好现在可以派上用场了。不过在测试的过程中还是碰到了不小问题,想来是自己基础不好的缘故。

       这次不TDD了,太麻烦了。
       先看看我们要测试的代码
     
Java 代码
 
  1. CallableStatementcstmt = null;  
  2.         try {  
  3.             cstmt = _conn.prepareCall("{call LUCK_LOAD_COMMON(?,?)}");  
  4.             cstmt.setString(1, "1");  
  5.             cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);  
  6.   
  7.             cstmt.executeUpdate();  
  8.             return cstmt.getString(2);  
  9.   
  10.         } catch (Exception e) {  
  11.             GxDebug.logException(e);  
  12.             e.printStackTrace();  
  13.             return null;  
  14.         } finally {  
  15.             if (cstmt != null)  
  16.                 try {  
  17.                     cstmt.close();  
  18.                 } catch (Exception e) {  
  19.             }  
  20.         }  
  代码还挺长的。从上面的代码我们知道我们必须mock两个对象进去。一个是Connection, 一个是CallableStatementcstmt 。
好再看看我们的测试代码
java 代码
  1. conn.prepareCall("{call LUCK_LOAD_COMMON(?,?)}");  
  2.     conControl.setReturnValue(cstmt);  
  3.     conControl.replay();  
  4.       
  5.     cstmt.setString(1, "1");  
  6.     cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);  
  7.     cstmt.executeUpdate();  
  8.     cstmtControl.setReturnValue(1);  
  9.     cstmt.getString(2);  
  10.     cstmtControl.setReturnValue("5,4,3");  
  11.     cstmt.close();  
  12.     cstmtControl.replay();  
  13.       
  14.       
  15.     String rusult = dao.getNumber();  
  16.     Assert.assertEquals("5,4,3", rusult);  
  17.       
  18.     conControl.verify();  
  19.     cstmtControl.verify();  

oh,my got!测试代码比实现代码还要多。这段代码能执行吗?
我想可以的。easymock的原理是记录-回放的模式。
我想要做的工作是:
1,记录你mock对象的工作记录,比如上面的代码我们mock对象的工作记录是:
java 代码
  1. conn.prepareCall("{call LUCK_LOAD_COMMON(?,?)}");  
  2.         conControl.setReturnValue(cstmt);  
  3.         cstmt.setString(1, "1");  
  4.         cstmt.registerOutParameter(2, java.sql.Types.VARCHAR);  
  5.         cstmt.executeUpdate();  
  6.         cstmtControl.setReturnValue(1);  
  7.         cstmt.getString(2);  
  8.         cstmtControl.setReturnValue("5,4,3");  
  9.         cstmt.close();  
  10.   

 假如你工作记录的代码要求有返回值的话,那么你必须提供一个自定义的值给它,否则会报错。比如上面的
  •  cstmt.getString(2);  
  •         cstmtControl.setReturnValue("5,4,3");   //自己定义的返回值,用作以后的比较。
    上面的是记录操作,回放的时候,easymock会把记录的操作跟你实际的代码进行比较,假如里面出了什么差错,那么不好意思你的代码有问题,请修正后再测试。

    假如有爱好可以自己试下。


  • 上一篇:让Java动起来的脚本语言 人气:381
    下一篇:专家和您一起谈谈java加壳的问题 人气:317
    浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
      最新网站源码 最新软件下载
    2008-9-5 Coppermine Photo Gallery v1.4.
    2008-9-5 清松网络日记本 v2.4
    2008-9-5 AyWeb企业网站管理系统 v2.3 bui
    2008-9-5 美女写真小偷程序联盟 v3.0 buil
    2008-9-5 老Y文章管理系统 v2.1
    2008-9-5 SiteDynamic企业网站管理系统 v1
    2008-9-5 MyCOM企业网站管理系统 v1.0 Bui
    2008-9-5 乐风CMS影视版 2008
    2008-9-5 幻影电影视频系统TvsCms v1.3 伪
    2008-8-23 Mini WinMount V0.4
    2008-8-23 Vista优化大师3.11正式版
    2008-8-23 Wine 1.13
    2008-8-23 KlipFolio 5.0 Build 5899-80
    2008-8-23 Windows Sysinternals Desktops
    2008-8-23 OneTap Movies1.2破解版
    2008-8-23 AnnotaterPDF阅读1.1.503 破解版
    2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
    2008-8-23 iDrum音乐节拍1.0破解版
      发表评论
    姓 名: 验证码:
    内 容:
    站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
    实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
    业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
    Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
    ホームページ制作 不動産検索システム 求人情報
    防水工事·改修工事 フットサル大会 探偵