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