1

对于针对数据库抽象库的 11 个不同 RBDMS 运行的集成测试,我需要经常重置架构和/或数据。这意味着,我为大多数测试用例运行了大量的语句。

仅在测试套件开始时才需要模式重置。例如:

DROP VIEW
DROP TABLE
DROP SEQUENCE
DROP PROCEDURE
...

CREATE TABLE
...

只有写入数据的测试才需要数据重置。例如:

DROP SEQUENCE
DELETE FROM TABLE ...

CREATE SEQUENCE
INSERT INTO TABLE ...

只读测试非常快,因为它们不需要任何重置。直观地说,我只是将一个 SQL 文件读入内存并使用以下命令执行每条语句:

// No bind variables, all hard parses
// Bind variables won't help much, though as the "hard-parse-reduction" isn't very big.
stmt = connection.createStatement();
stmt.execute(sql);

在某些系统上,这非常慢。有没有更好的方法来用 JDBC 做到这一点?还是我必须接受这可能很慢的事实......?

4

1 回答 1

2

部分想法:为了更快地删除,许多 DBMS 都有“截断表”语句。

Another partial idea: instead of deleting and reinstalling everything at the start of the test, you could just copy the files of an empty database. This will require in-depth knowledge of all 11 DBMS though, and you'll need to shutdown the processes.

于 2011-08-06T09:10:17.657 回答