【发布时间】:2016-01-14 23:18:32
【问题描述】:
哪些可用的内存数据库对 SQL Server 特定功能的支持最好?
我一直在尝试使用 H2,但遇到了转义列名等问题:在我们所有的 sql 查询中,我们使用(非标准)[FIELDNAME] 而不是“FIELDNAME”。 H2 显然不支持这一点。可能还有其他可能使用的非标准功能,所以我想知道是否有人知道以与 SQL Server 兼容为目标的特定数据库。
为了把它放到上下文中,我使用 maven 和 maven-sql-plugin 在运行测试之前创建数据库。
我一直在看
- H2
- HSQL
- 德比
但无法确定哪一个对 SQL Server 的支持最好,或者是否还有其他可以查看。
【问题讨论】:
-
为什么不在您的 SQL Server 开发数据库上运行测试?我已经在几个项目中使用了这种策略(尽管使用了 Oracle 和 PostgreSQL),并且它一直运行良好。您节省了创建内存数据库 + 基础数据加载的启动成本,并避免了所有数据库兼容性问题。
-
@Rogério:我希望能够在 Jenkins 上自动运行测试,并 100% 确保没有其他人同时针对同一个数据库运行并可能修改数据。您所建议的是我们现在实际上是如何做的,我想对此进行改进。
-
您的测试不应该向数据库提交事务。这样一来,它们将始终彼此隔离运行,这是必须的。
-
... 除非我们谈论需要提交事务的功能/Web/UI 测试。在这种情况下,当然,共享数据库不会成为一种选择。这是我避免此类测试的原因之一(其他原因是它们比仅回滚的集成测试太慢且更脆弱)。
标签: java sql-server maven integration-testing in-memory-database