【发布时间】:2014-02-19 12:02:48
【问题描述】:
我正在尝试找到一种方法来对我的 MySQL 相关代码进行单元测试。我知道我希望它如何工作,但找不到适合我的解决方案。我已经研究过 DBUnit,但似乎(如果我没记错的话)这需要一个正在运行的数据库,并且只是有助于单元测试方面的事情。我想要一些方法来避免在测试时运行 mysql 数据库。最有效的是某种 MySQL 欺骗驱动程序,它将数据实际存储在内存中,而不是需要访问真正的持久数据库。
在我的代码中,访问 MySQL 数据库是硬编码的,所以我不能只注入一些模拟对象。我希望它的工作方式是当我的代码调用时:
DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
它实际上得到了一些其他的本地数据库,可以通过 maven 或在 maven 测试的 setUp 中进行配置。我研究过基于内存的数据库,例如 HSQLDB,但找不到欺骗 MySQL 驱动程序的方法。
是否有任何工具可以提供我正在寻找的东西?有什么好的方法可以测试 MySQL 依赖的代码吗?
【问题讨论】:
-
stackoverflow.com/questions/10692398/… 单元测试时记得在启动主程序之前先填充数据库。
-
我不确定在没有实际运行 mysql 服务器的情况下如何使用它。然而,这个想法确实让我想到了在我的单元测试期间运行一个嵌入式 mysql 服务器。
标签: java mysql unit-testing dbunit