我有一个应用程序,其中许多"单元"测试在执行期间使用与Oracle数据库的真实连接.
可以想象,这些测试需要花费太多时间来执行,因为它们需要初始化一些Spring上下文,并与Oracle实例进行通信.除此之外,我们还必须管理复杂的机制,例如事务,以避免在测试执行后修改数据库(即使我们使用Spring中的有用类AbstractAnnotationAwareTransactionalTests).
所以我的想法是逐步用内存数据库替换这个Oracle测试实例.我会用hsqldb或者更好h2.
我的问题是要知道这样做的最佳方法是什么.我主要关心的是构建内存数据库结构和插入参考数据.
当然,我可以使用像SQL Developeror 这样的工具从Oracle中提取数据库结构TOAD,然后修改这些脚本以使它们适应hsqldb或h2使用它们.但我不认为这是更好的方法.
事实上,我已经在另一个项目上使用了hsqldb,但是我已经手动编写了所有脚本来创建表.幸运的是,我只创建了几张桌子.我在此步骤中的主要问题是将用于创建表的Oracle脚本"转换"为该hsqldb语言.
例如,使用以下sql命令在Oracle中创建的表:
CREATE TABLE FOOBAR (
SOME_ID NUMBER,
SOME_DATE DATE, -- Add primary key constraint
SOME_STATUS NUMBER,
SOME_FLAG NUMBER(1) DEFAULT 0 NOT NULL);
Run Code Online (Sandbox Code Playgroud)
需要"翻译"为hsqldb:
CREATE TABLE FOOBAR (
SOME_ID NUMERIC,
SOME_DATE TIMESTAMP PRIMARY KEY,
SOME_STATUS NUMERIC,
SOME_FLAG INTEGER DEFAULT 0 NOT NULL);
Run Code Online (Sandbox Code Playgroud)
在我当前的项目中,有太多表要手动执行...
所以我的问题:
h2还是hsqldb提供了一些工具来生成一个Oracle连接的脚本?技术信息 …