今天学到了一个新的工具:JdbcProxy,关于它的介绍可以看这里:http://www.ibm.com/developerworks/cn/java/j-lo-jdbcproxy/?S_TACT=105AGX52&S_CMP=tec-csdn
我感觉这个工具的最大用处就是
构造测试数据。目前可以想到的应用场景是这样的:设计好测试用例之后,测试人员先根据测试用例连接实际的数据库执行一遍,通过此过程用JdbcProxy生成JDBC调用过程。之后把生成的调用过程文件放到http服务器下(之前要用JdbcProxy中的StubTracerMerger类来合并成一个xml文件),修改数据库连接的配置,改成连接那个HTTP服务,这样测试人员可以在脱离数据库的情况下重复进行那个测试过程。JdbcProxy在这里起到了一个“录制-回放”的作用。
为什么要脱离数据库呢,这样一个明显的好处就是:你的测试数据在一个文件里,这样每个测试用例一个文件,大家各测各的,相互不影响。即使是只有一个测试人员,他在测试过程中,前面的测试也不致于影响后面测试时的数据。总之据我了解,测试人员在测程序时,构造数据都要构造一阵,耽误不少时间,有时候为了图省事,可能构造的数据不合要求,害处更大。
其实,按我上面描述的过程,似乎也不省事,但肯定有办法减少手工操作。以后确定了一个框架后我再补充在后面。
下面我想说一下实践过程,上面提供的网址里已经说的很详细了,但为方便实践,我还是自己再总结一下。
首先下载下来jar包(http://jdbcproxy.sourceforge.net/)JdbcProxy-1.1.jar。(在http://www.mvnrepository.com/上没有找到这个包的pom)
其次,录制DAO调用过程。
写类似下面的程序:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
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:output:com.mysql.jdbc.Driver:jdbc:mysql://localhost:3306/test?user=root&password=root";
Class.forName(driver);
Connection connection = DriverManager.getConnection(url);
Statement stmt = connection.createStatement();
stmt.executeUpdate("delete from PERSON");//delete
stmt.executeUpdate("insert into PERSON values ('1', 'wowo')");
stmt.executeUpdate("insert into PERSON values ('2', 'pipilu')"); //insert
stmt.executeUpdate("update PERSON SET name = 'Good Night'"); //update
ResultSet rs = stmt.executeQuery("SELECT * FROM PERSON");//select
while (rs.next()) {
System.out.println(rs.getString("NAME"));
}
rs.close();
stmt.close();
connection.close();
}
}
这里面修改url可以达到不同的功能:
1、生成方便人阅读的JDBC调用过程记录,则采用下面格式的url
jdbc:tracer:<filename>:<driver>:<url>
2、生成方便软件“阅读”的JDBC调用过程记录,采用下面的格式:
jdbc:stubtracer:<foldername>:<driver>:<url>
3、访问部署到http服务器上的JDBC调用过程,采用如下格式:
jdbc:stub:<hostname>:<port>:<timeout>:<filename>
上面的示例程序是直接生成方便软件阅读的JDBC调用过程记录。生成到程序执行目录下的output文件夹下了(多个request_XX_XX.txt和response_XX_XX.txt文件)。
之后要把生成的文件合并为一个xml,在JdbcProxy-1.1.jar中有办这件事儿的工具:
nl.griffelservices.proxy.stub.StubTracerMerger
文件名可以随意取,我想,以用例的编号命名可能好一些。
把合并完成的xml(比如output.xml)放到http服务器上,确定可以访问到。
比如我把那个文件放到了我的Tomcat的webapps\ROOT下(你可以放到Apache下或IIS下)。那么,我启动了tomcat后,应该可以通过http://localhost:8008/output.xml访问到这个文件。
现在就可以测试一下效果了,用你的程序直接访问这个http服务,把上面示例程序中的url改为“jdbc:stub:localhost:8008:1000:output.xml”(只需改这一处),然后运行程序,程序在不访问数据库的情况下成功执行。修改程序中的sql试一下——报错了!当然,因为这个并不能代替数据库,它只是把JDBC调用过程录下来了而已。
分享到:
相关推荐
MySQL 是一种流行的关系型数据库管理系统,而 JDBCProxy 则是一个开源的 JDBC 代理项目,能够记录 Java 应用程序的数据库访问过程并将其重现。 JDBC 的主要功能是提供了一种统一的方式来访问不同的关系型数据库,...
JdbcProxy是JDBC 2.0驱动程序,可以帮助调试或测试应用程序。 该驱动程序可以包装另一个JDBC驱动程序,以调试应用程序完成的JDBC调用。 该驱动程序还可以模拟另一个JDBC驱动程序,以在没有数据库的情况下测试应用...
JdbcProxy 示例程序 JdbcProxy 可以理解为 JDBC 代理,是一个开源的 JDBC 项目。...本文将以一个具体的 Java 应用为例,演示如何使用 JdbcProxy 记录和重现 JDBC 访问,实现 Java 应用的测试工作。
代理模式(Proxy Pattern) 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。...
内容概要:本文档介绍了航空公司的业务分析案例研究,涵盖两个主要部分:a) 使用SSIS进行数据转换,b) 利用RapidMiner进行预测分析。这两个任务旨在通过改善客户满意度来优化业务运营。数据来源包括多个CSV文件,如flight_1.csv、flight_2.csv、type.csv、customer.csv 和 address.csv。第一部分要求学生创建事实表、客户维度表和时间维度表,并描述整个数据转换流程。第二部分则需要利用RapidMiner开发两种不同的模型(如决策树和逻辑回归)来预测客户满意度,并完成详细的报告,其中包括执行摘要、预测分析过程、重要变量解释、分类结果、改进建议和伦理问题讨论。 适合人群:适用于对数据科学和商业分析有一定基础的学生或专业人士。 使用场景及目标:本案例研究用于教学和评估,帮助学员掌握数据转换和预测建模的技术方法,提高客户满意度和业务绩效。目标是通过实际操作加深对相关工具和技术的理解,并能够将其应用于实际业务中。 其他说明:此作业占总评的40%,截止时间为2024年10月25日16:00。
一、课题介绍 现在我国尤其是北方城市,工业发达,废弃排放严重,这使得雾霾越来越厉害,让能见度极低。这严重影响了我们的交通系统,导航系统,卫星定位系统等,给人民出行,工作带来极大的不便利。目前市场上高清拍摄设备虽然可以让成像清晰点,但是造价高昂。如果有一套软件处理系统,可以实时地处理含雾的图像,让成像去雾化,让图像变得清晰,将会很受欢迎。 该课题是基于MATLAB平台的图像去雾处理,配备一个人机交互GUI界面,可以选择全局直方图均衡化,Retinex算法,同态滤波,通过对比处理前后的图像的直方图,而直方图是一副图像各灰度值在0-256的分布个数的表,信息论已经整明,具有均匀分布直方图的图像,其信息量是最大的。 二、算法介绍 ①全局直方图均衡化:通俗地理解就是,不管三七二十一,直接强行对彩色图像的R,G,B三通道颜色进行histeq均衡处理,然后进行三通道重组; ②Retinex算法:通俗地讲就是,分离R,G,B三通道,对每个通道进行卷积滤波。
微信支付V2版本的支付接口,java的SDK
一款IDEA好用的插件,适用于旗舰版,可以延长试用期限,你懂的!
内容概要:本文详细介绍了发电机组保护整定方法,讨论了发电机可能遇到的故障状态及相应的保护措施,包括定子绕组故障、转子绕组故障、过电流、过电压等情况,并提供了具体的保护配置。接着,对变压器常见故障进行了分类说明,并给出变压器的主保护和后备保护配置方案。文章进一步计算了不同短路点的短路电流,阐述了互感器的选择标准,并举例解释了纵联保护的应用和后备保护的作用。 适合人群:电力系统工程师、继电保护技术人员及相关研究领域的学者。 使用场景及目标:适用于发电厂和变电站的设计、维护和运行人员,旨在提高电力系统的安全性和稳定性。目标是确保电力系统关键设备的安全运行,防止故障的发生,减少事故造成的损失。 其他说明:本文不仅提供了详细的理论分析,还包括了大量的数据计算和实例说明,有助于读者更好地理解和掌握继电保护的相关知识和技术。
基于C++开发的微商系统项目源码 使用技术:C++/Qt、Mysql、TCP/IP 软件架构 三个大端:服务端、客户端(买家端)、业务端(卖家端) PS:需要连Mysql数据库才能正常使用,连接mysql时记得把用户、密码啥的改为自己的数据库信息
1503ANDH1503002016_20241116222825
数理逻辑近世代数复习资料,思维导图部分
京东中台业务架构敏捷性方法 MotriDSP 落地实践.pdf
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
CCF会员复习资料(1).zip
ASP.NET养老院老人信息管理系统源码 这是一款非常优秀的养老院老人信息管理系统。程序功能齐全,可选择性强。 管理员后台: 1、人员信息管理:老人信息管理、管理员信息管理、员工信息管理 2、公寓信息管理:添加公寓楼信息、管理公寓楼信息、添加公寓信息、管理公寓信息 3、公寓安排管理:添加公寓安排、公寓安排管理、缴费管理 4、健康管理信息管理:添加健康管理信息、管理健康管理信息 5、紧急联络人管理 6、意见信息管理 7、公告信息管理:添加公告信息、管理公告信息 8、出入信息管理:请假信息管理、访客记录管理、退住情况 员工后台: 1、人员信息管理:老人信息管理 2、健康管理信息管理:管理健康管理信息 3、紧急联络人管理 4、意见信息管理 5、公告信息管理:管理公告信息 6、出入信息管理:请假信息管理、访客记录管理、退住情况 老人后台: 1、修改个人信息 2、修改登陆密码 3、意见信息管理:发布意见信息、意见信息管理 4、查看公告信息
走向现代化数据分析架构:趋势与挑战.pdf
PHP通用权限管理系统源码 安装说明: 1.把管理系统.sql 导入到MYSQL数据库中,把App/Common/Conf/db.php中的数据库名称,账号密码改成自己的。 2.把程序放在二级目录下,如:http://localhost/xcrm/ 账号 admin 密码admin123 3.请使用IE8以上,或是谷歌浏览器。 4.支持环境php+apache,php版本要大于5.3 注意:删除App下面 Runtime 文件夹;如果Linux服务器,需要分配777权限; 修改config.php数据库连接地址:绝对路径 大家在安装的时候遇到问题 1.页面顶部出现空白一行 解决办法:db.php 要以uft8无BOM格式编码 保存 notepad++ 编辑器里 格式 下 2.乱码问题 解决办法:数据库建表的时候选 uft8-general-ci 编码格式 然后点开 SQL 把1,SQL复制进去,执行就可以了 3、如果程序执行时报错? 解决办法:保存PHP>5.3版本 删除App下面 Runtime 文件夹 使用须知:注释:权限管理,修改完用户所属组之后,
详细介绍及样例数据:https://blog.csdn.net/m0_65541699/article/details/143823092
席卡制作模版会议较多的单位,经常要打印席卡,本模版可以解决燃眉之急