我正在测试使用SQL Server数据库的应用程序 . 出于测试目的,我真的希望能够使用内存数据库,如HSQL . 我实际上已经运行了测试但是我仍有一个难点 - 我很难生成可用于构建HSQL数据库的SQL脚本 . 由于此系统仍处于开发阶段,因此可以并且确实发生了数据库更改,因此我不想花费所有时间手动更新SQL脚本 .
在SQL Server Management Studio中,我可以生成一个脚本来构建该数据库 . 但是,该脚本包含许多SQL Server特定的“内容” . 因此,我不能将该脚本带到HSQL并让它执行 . 相反,我需要花费大量时间来撕掉那些在HSQL中不起作用的东西 .
一位同事建议使用PowerBuilder来生成脚本,虽然它生成的脚本有点干净,但它仍然不会在HSQL中“按原样”运行 .
任何人都可以建议一个方法(工具,过程等),我可以用它指向SQL Server数据库并生成一个脚本,将在HSQL中构建完全相同的数据库?
谢谢!
3 回答
假设您正在使用Hibernate,您可以在测试用例中配置Hibernate以在创建
sessionFactory
时创建表 .此方法的唯一缺点是,如果您的HBM文件没有与物理SQL Server数据库匹配的设置(例如,您省略了HBM文件中的某些约束或列),那么HSQL中创建的表将是不同 .
正如limc给出的答案的后续行动一样,这就是我能够做到的 .
我正在使用Spring和Hibernate,所以我能够获取我的Spring数据配置文件并将其转换为:
有了这个,我能够使用propertyConfigurer配置来填充占位符,如下所示:
我有一个用于测试的文件,还有一个用于我的 生产环境 代码 . 上面显示的是我的测试版本,并引用文件test-messages.properties,如下所示:
这实际上非常好用,因为我可以通过利用占位符和propertyConfigurer构造重用几乎所有的 生产环境 配置文件 . 我的测试环境需要的唯一额外文件是propertyConfigurer配置文件和它们指向的属性文件 .
谢谢,限制!
顺便说一句,我确实看到了limc提到的问题 . 此系统旨在部署以连接到 生产环境 中的SQL Server数据库,该数据库不会通过hbm2ddl创建 . 所以,如果我的HBM文件中有错误,我的测试可能都可以正常工作,而我可能仍会在 生产环境 中出现故障 .
一方面,我对此非常不满,但另一方面,我实际上可以以完全独立的方式对数据库运行测试用例 . 有了这个解决方案,有人可以从源代码控制中检查这个项目,并立即运行测试用例,而无需进行任何类型的数据库设置 . 我也喜欢那个 . 不幸的是,我还没有找到一个非常棒的方法 .
有用于跨引擎数据库迁移的工具 . 一个可以完成这项工作的工具是http://liquibase.org/