仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 403|回复: 10
打印 上一主题 下一主题

[学习教程] 发布一篇利用JdbcProxy测试Java使用程序

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
在我们测试Java使用程序时,常常必要毗连数据库,并从数据库中取得正确的测试数据用以测试使用程序是不是准确。但是筹办测试数据的事情较为庞大,一旦数据库中的数据产生变更,要想恢复到之前的版本也很费时。关于那些没有条件毗连数据库的测试者而言,测试事情是不克不及举行下往的。因而,假如能够为某个待测使用筹办一套完整的测试数据,让程序开辟、测试职员在不依附于详细数据库的情形下对使用举行测试,这无疑是非常便利的。
简介
JdbcProxy是SourceForge上一个开源的Java项目,用Java言语编写,遵守LGPL和MPL1.1协定,由FransvanGool开辟,撑持JDBC2.0标准。通过承继和重写JDBC2.0的接口,将一个Java使用会见数据库的历程纪录在XML文件中,并经由过程这些文件在离开数据库的情形下重现这个挪用历程。JdbcProxy能够用在Java使用程序的测试中,举行数据筹办并摹拟数据库挪用历程。读者能够从JdbcProxy主页取得最新的程序源代码和申明文档。今朝最新的版本是1.1。
利用JdbcProxy取代一般的数据库挪用能够满意程序开辟、测试职员的良多需求,使筹办测试数据的事情变得复杂。以文章查询体系为例,有些测试用例需要测试当数据库中没无数据时页面的显现情形——显现没有响应数据的页面;有些测试用例必要测试当数据库中只要一条数据时页面的显现情形——显现文章的内容而不是文章的列表;另有些测试用例必要测试页面的分页效果,这时候就必要为程序筹办分歧的测试数据。假如接纳间接毗连测试用数据库的体例举行测试,分歧的测试用例必要从头筹办测试数据库,操纵起来对照庞大,也不克不及同时测试分歧的测试场景。假如利用JdbcProxy,就能够为统一个Java程序筹办分歧的测试用数据文件,测试者能够离开后端数据库的限定,只必要会见到数据文件就能完成测试。分歧测试职员可以相互不受影响的同时测试这个使用,从而年夜年夜简化了筹办测试情况的历程。
利用JdbcProxy
JdbcProxy供应了两种纪录JDBC挪用历程的体例,一种是便利开辟职员和测试职员浏览的,另外一种是用于回放JDBC挪用历程的。
第一种体例次要是为了闪开发职员和测试职员可以懂得Java使用挪用JDBC的具体信息,当使用程序较为庞大——比方举行了多表查询,接纳这类纪录体例可让开辟职员和测试职员一览无余的看到使用程序会见数据库的历程。
第二种体例是为测试程序筹办数据的关头步骤之一。为了回放JDBC挪用历程,JdbcProxy分离处置使用程序对数据库的每一个哀求(request)与呼应(response),并在指定目次下天生一系列XML文件,这些文件是回放JDBC挪用历程的基本。这些request/response文件其实不能间接被JdbcProxy挪用,JdbcProxy还供应了一个StubTraceMerger工具,用来将这些request/response文件整合在一个文件中,这个整合的文件就是我们测试Java使用所必要的数据文件。
JdbcProxy供应了一种经由过程HTTP服务器发送哀求并吸收呼应的机制,这些请乞降呼应都依照使用程序的JDBC挪用按次纪录在整合文件中,当Java使用试图经由过程JDBC毗连数据库时,JdbcProxy会经由过程HTTP服务器从整合文件中读取响应的数据,摹拟挪用数据库的历程,利用户得以在离开数据库的情形下举行Java使用的测试。
因而要想使用JdbcProxy测试Java使用程序,起首必要天生用于回放JDBC挪用历程的request/response文件,然后将这些request/response文件整合在一个文件中,最初将这个整合的数据文件供应给HTTP服务器,如许JdbcProxy就能够经由过程HTTP服务器会见到数据文件,完成离开数据库举行测试的目标。
上面将对JdbcProxy供应的每一个功效做具体的先容。
纪录便利开辟职员和测试职员浏览的JDBC挪用历程
JdbcProxy能够跟踪JDBC挪用历程,天生便利开辟职员和测试职员浏览的文件格局。在一般的数据库挪用中,假如开辟职员和测试职员想懂得JDBC的挪用历程,大概必要完全的检察某个SQL语句,则必要手工将这些信息打印出来大概纪录在日记中。JdbcProxy的这个功效就像为JDBC的挪用历程主动纪录了一个日记,开辟职员和测试职员能够从日记中取得被挪用的每个办法,和挪用方法的参数和前往值。如许便于开辟职员和测试职员发明因为SQL语句拼写毛病而招致的数据库会见失利,或是因为数据库中没无数据而招致的空指针非常,使应用程序的数据库会见历程加倍直不雅。能够依据清单1中的示例代码天生JDBC调用历程。
清单1
importjava.sql.Statement;
publicclassJdbcProxyDemo{
  publicstaticvoidmain(Stringargs[])throwsException{
    Stringdriver="nl.griffelservices.proxy.jdbc.oracle.StubTracerDriver";
    Stringurl="jdbc:tracer::COM.ibm.db2.jdbc.app.DB2Driver:jdbc:db2:SAMPLE";
    Class.forName(driver);
    Connectionconnection=DriverManager.getConnection(url);
    Statementstmt=connection.createStatement();
    stmt.executeUpdate("DELETEFROMgreetingsWHEREgreeting=GoodNight");//delete
    stmt.executeUpdate("INSERTINTOgreetingsVALUES(GoodEvening)");//insert
    stmt.executeUpdate("UPDATEgreetingsSETgreeting=GoodNight
      WHEREgreeting=GoodEvening");//update
    ResultSetrs=stmt.executeQuery("SELECT*FROMgreetings");//select
    while(rs.next()){
      System.out.println(rs.getString("greeting"));
    }
    rs.close();
    stmt.close();
    connection.close();
  }
}
<p>
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。
老尸 该用户已被删除
沙发
发表于 2015-1-20 15:51:59 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-25 21:37:43 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
再现理想 该用户已被删除
地板
发表于 2015-2-4 02:07:11 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
第二个灵魂 该用户已被删除
5#
发表于 2015-2-5 09:40:57 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
若天明 该用户已被删除
6#
发表于 2015-2-7 02:37:34 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
分手快乐 该用户已被删除
7#
发表于 2015-2-8 20:15:51 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
深爱那片海 该用户已被删除
8#
发表于 2015-2-26 03:29:14 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
小魔女 该用户已被删除
9#
发表于 2015-3-8 11:40:58 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
灵魂腐蚀 该用户已被删除
10#
发表于 2015-3-15 22:24:05 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
因胸联盟 该用户已被删除
11#
发表于 2015-3-22 17:08:17 | 只看该作者
是一种为 Internet发展的计算机语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-27 07:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表