5

我有很多访问数据库的 DAO 测试。我试图在 H2 等内存数据库中使用 Java 来模拟它们。但问题是 ddl 脚本包含 H2 似乎不支持的分区语句。我基本上想使用与生产中相同的 ddl 脚本,并且不想以任何方式为我的“单元”测试修改它们。我也尝试过 HSQL,但发现 H2 更接近于 oracle,但即便如此它也不支持分区。有解决方法吗?

我确实看过以下 从 Oracle 实例创建内存数据库结构 它谈到了使用 H2,但我已经提到了它的缺点。寻找一些替代品。

4

2 回答 2

2

如果您想要有意义的测试,您将需要针对与您将在生产中运行的数据库版本相同的实例运行它们。

于 2013-02-12T23:54:59.430 回答
0

您可以使用 Oracle 的数据字典生成包含表、它们的关系、索引、约束等的 H2 模式。我正在使用这种生成的模式来测试内存中的 H2 数据库。

例如,要获取所有表及其列,您可以使用以下查询:

SELECT 
  ut.table_name,
  utc.column_name,
  utc.data_type,
  utc.data_length,
  utc.data_precision
  FROM user_tables ut JOIN user_tab_columns utc
    ON ut.table_name = utc.table_name;

可以对外键、其他约束、索引、序列以及测试所需的所有其他内容进行类似的查询。您还需要一个模板引擎来将查询结果转换为 H2 DDL 脚本。

于 2013-02-12T21:47:22.067 回答