我不可能是唯一面临这个问题的人,因此我正在寻求建议。
我们在 Oracle 上运行应用程序,但我们的集成测试使用 h2 进行快速的内存测试,数据库是在测试开始时从 DDL 脚本构建的。
问题在于,一些 DDL 命令的使用/语法在 Oracle 和 h2/hsqldb 之间有所不同。例如,今天我花了一些时间才意识到,在 Oracle 中,“grant select on ...” 可以在序列上工作,但在 h2 上只能在表上工作。
在之前的一个项目中,我们有一个适配器来删除/翻译这样错误的命令,这意味着我们的测试数据库运行了与我们实现到生产环境中的代码非常不同的代码。虽然一切都经过了非常彻底的验收测试,但这意味着某些问题可能要到开发周期中的相当晚的时候才会被发现。
在我的最新项目中,我感到自己正在走同样的路线 - 所以肯定还有其他人也曾走过这条路。
有什么建议吗?我们使用 java/maven,因此欢迎提供适当的解决方案!
我们在 Oracle 上运行应用程序,但我们的集成测试使用 h2 进行快速的内存测试,数据库是在测试开始时从 DDL 脚本构建的。
问题在于,一些 DDL 命令的使用/语法在 Oracle 和 h2/hsqldb 之间有所不同。例如,今天我花了一些时间才意识到,在 Oracle 中,“grant select on ...” 可以在序列上工作,但在 h2 上只能在表上工作。
在之前的一个项目中,我们有一个适配器来删除/翻译这样错误的命令,这意味着我们的测试数据库运行了与我们实现到生产环境中的代码非常不同的代码。虽然一切都经过了非常彻底的验收测试,但这意味着某些问题可能要到开发周期中的相当晚的时候才会被发现。
在我的最新项目中,我感到自己正在走同样的路线 - 所以肯定还有其他人也曾走过这条路。
有什么建议吗?我们使用 java/maven,因此欢迎提供适当的解决方案!