我收集数据和这些数据存储在使用Java MySQL数据库。 此外,我使用Maven构建项目,TestNG的一个测试框架,而Spring-JDBC访问数据库。 我实现了封装了对数据库的访问一个DAO层。 除了使用DAO类我要执行哪个汇总数据的一些查询和存储在一些其他表中的结果将数据(如物化视图)。
现在,我想写一些测试用例该检查DAO类是否他们应该工作。 因此,我想用一个内存数据库,这将与一些测试的数据来填充的。 由于我也使用MySQL特定的SQL查询的汇总数据,我去了一些麻烦:
- 首先,我想过简单地使用由Spring-JDBC提供的嵌入式数据库功能来实例化一个嵌入式数据库。 我决定用H2执行。 在那里,我遇到了麻烦,因为聚集查询,这是使用MySQL特定内容(如时间操作功能,如DATE())。 这种方法的另一个缺点是,我要维护两个DDL文件 - 实际DDL文件中定义在MySQL(这里我定义编码并添加注释,以表和列,这两个功能是MySQL特有)的表; 并且定义了相同的表,但没有注释等,因为H2不支持评论测试DDL文件。
- 我已经发现了描述用于使用MySQL作为我可以测试用例内使用嵌入式数据库(http://literatitech.blogspot.de/2011/04/embedded-mysql-server-for-junit-testing.html) 。 这听起来真的有希望在我身上。 不幸的是,它没有工作:发生MissingResourceExcpetion“资源‘5-0-21 / Linux的AMD64 / mysqld的’未找到”。 看来,司机无法找到我的本地机器上的数据库守护进程。 但我不知道我必须去寻找找到该问题的解决方案。
现在,我感到有点卡住,如果我要创建的架构不同,我想知道。 难道有人有一些提示,我应该如何设置一个合适的系统? 我心里有另外两个选项:
- 相反,使用嵌入式数据库的,我会用本地MySQL实例和设置是只用于测试案例数据库去。 此选项听起来很慢。 其实,我可能要建立一个CI服务器以后,我还以为使用嵌入式数据库将是自试运行更快更合适。
- 我删除所有MySQL特有的东西出来的SQL查询和使用H2作为测试的嵌入式数据库。 如果这个选项是正确的选择,我需要找到另一种方式来测试数据汇总到物化视图的SQL查询。
- 或者是有,我不记得某第三个选择吗?
我将不胜感激任何提示。
谢谢,XComp