快速业务通道

使用JdbcProxy测试Java应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ver 2.2.4,使用默认端口 80 。用整合的数据文件替换 \htdocs 目录下的默认欢迎页面,这样 HTTP 服务器就 可以从本地 80 端口接收请求并在数据文件中匹配到相应的 response,将 response 内容返回给 Java 应用程序。我们可以在控制台得到与直接连接数据库 时相同的返回结果,JdbcProxy 可以通过预先准备好的数据文件,在不连接数据 库的情况下通过 HTTP 服务器获得准确的响应数据,测试 Java 应用程序是否能 够正确执行。

开发人员和测试人员可以通过修改整合的数据来获得不同的测试场景,例如按 照整合文件的数据格式添加新的数据、删除多余的数据、或是修改数据的类型, 用来构建不同的测试用例,满足不同测试的需要。

改进 JdbcProxy

在整合 request/response 文件时,JdbcProxy 只能将整合的数据文件输出到 控制台,这种输出方式非常不利于在回放过程中使用。如果可以直接将其输入到 \htdocs 目录下的默认文件中,则省去了每次移动文件的麻烦。另外,JdbcProxy 只提供通过 HTTP 服务器回放 JDBC 调用过程的方式,必须有 HTTP 服务器的支 持。因此,我们对 JdbcProxy 进行了一些改进,首先可以将整合的文件直接输出 到指定目录下,其次可以不依靠 HTTP 服务器直接从整合文件中获取 JDBC 响应 。

下面将介绍如何直接生成整合文件以及通过整合文件回放 JDBC 调用过程。

直接生成整合文件

在生成整合文件时,我们可以省去一系列生成 request/response 文件的步骤 ,直接将每个 request 和 response 存储于一个静态的 TreeMap 中,再将 TreeMap 中的内容整合并按照指定路径输出到文件中。这样做可以大大节省依次 读取每个 request/response 文件所需要的时间,提高程序运行的效率。同时, 可以自行指定整合文件的输出位置,不需要手动将整合的数据文件内容从控制台 复制到 \htdocs 目录下的默认欢迎页面,在一定程度上减少了工作量。此处的改 动包括:修改了 StubTracerHandler 类的 invoke 方法,在 nl.griffelservices.proxy.stub 包下增加了 FileStubTracerMerger 类,demo 包下增加了 GenerateMergerFile 类。

在运行程序之前,需要先将 StubTracerHandler 类的 invoke 方法做如下修 改:

tracer.trace(request, response);

改成

new FileStubTracerMerger(map,request,response);

以便直接从内存中读取 response 生成整合文件。此外还需要运行下面程序, 如清单 9所示。

使用JdbcProxy测试Java应用程序(7)

时间:2011-05-25 IBM 郑溪龙

清单 9

import java.sql.Statement; public class JdbcProxyDemo {    public static void main(String args[]) throws Exception {      String driver = "nl.griffelservices.proxy.jdbc.oracle.StubTracerDriver";      String url = "jdbc:stubtracer::COM.ibm.db2.jdbc.app.DB2Driver:jdbc:db2:SAMPLE";      Class.forName(driver);      Connection connection = DriverManager.getConnection (url);      Statement stmt = connection.createStatement();      stmt.executeUpdate("DELETE FROM greetings WHERE greeting=''Good Night''");//delete      stmt.executeUpdate("INSERT INTO greetings VALUES(''Good Evening'')");//insert      stmt.executeUpdate("UPDATE greetings SET greeting = ''Good Night''        WHERE greeting = ''Good Evening''"); //update      ResultSet rs = stmt.executeQuery("SELECT * FROM greetings");//select      while (rs.next()) {        System.out.println(rs.getString("greeting&quo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号