我正在尝试找到一种方法来对依赖于MySQL的代码进行单元测试。我知道我希望它如何工作,但找不到适合我的解决方案。我已经研究过DBUnit,但似乎(如果我没有弄错的话)这将需要一个正在运行的数据库,并且只是辅助单元测试方面的事情。我想要一些方法来避免在测试时运行mysql数据库。最有效的是某种MySQL欺骗驱动程序,它实际上将数据存储在内存中,而不是需要访问真正的持久性数据库。
在我的代码中,访问MySQL数据库是很难编码的,所以我不能仅仅注入一些模拟对象。我希望它的工作方式是,当我的代码调用:
DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);它实际上获得了一些其他本地数据库,这些数据库可以通过maven或在maven测试的setUp中进行配置。我已经查看了基于内存的数据库,例如HSQLDB,但是找不到一种方法来欺骗MySQL驱动程序。
有没有能提供我想要的东西的工具?你有什么好的方法来测试依赖于MySQL的代码吗?
发布于 2015-07-31 16:24:57
我有几个项目,在这些项目中,我必须对正在运行的MySql服务器进行集成测试。我开发了一个library,它在您每次运行测试时设置MySQL的本地运行实例,而不是每次都花费时间进行设置。
这样,您就得到了一个测试数据库,它的行为与真实的数据库相似(因为它是真实的),而不必对其进行设置。
如果您想模拟数据库集成,DBUnit也是一个很好的选择(据我所知,在使用DBUnit时不需要真正的MySql服务器)。
https://stackoverflow.com/questions/21879908
复制相似问题