我在tomcat上部署了一个webapp,它使用JDBC驱动程序访问远程数据库。我的问题是:我怎样才能像代理一样进入中间并模拟结果(不改变单行Java代码)?
示例:我可以使用jdbc代理吗?
感谢。
答案 0 :(得分:0)
不改变/添加一行代码?从来没听说过。当然,如果您已经编程到一个接口并且计划为您的代码编写JUnit测试,那么您可以查看像Mockito这样的模拟库来为您完成这项工作,但是,“创建”数据的工作你想要留意吗。
答案 1 :(得分:0)
问题是:你想测试什么?您想验证您的SQL语句是否正确?还是交易边界?或者在DAO层内部进行一些数据处理?以这种方式思考可能会导致您对需要嘲笑的内容得出不同的结论。
答案 2 :(得分:0)
你几乎没有选择:
使用H2等嵌入式数据库。它甚至与其他数据库compatibility modes很少,因此您无需更改语句。
像Sanjay建议的那样使用像Mockito这样的模拟库。
使用dbUnit对数据库进行单元测试。
如果可行,请在本地计算机上安装远程数据库。
修改:根据您的评论,您似乎对选项1和2感兴趣。
我没有使用过mocking,因为我还不需要它(我更喜欢使用真正的东西),但我并不认为它没用。
所以,我将重点关注1:
查看H2的教程,特别是关于connecting to database using JDBC的部分。此外,阅读quickstart指南不会有害。你必须阅读才能理解; - )
为了兼容性,请检查我之前提供的链接,并使用适合您正在使用的数据库的任何模式(您没有指定哪个模式)。