如果满足条件,我将尝试退出H2初始化脚本。
使用H2数据库完全可以做到这一点。
SET @COUNT = SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_name = 'T_TABLE';
IF (@COUNT > 0) THEN RETURN;
我正在测试中初始化这样的数据。
@BeforeEach
public void setup() {
if (db != null)
return;
db = new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("db-schema.sql")
.build();
given(builder.build()).willReturn(db);
sut = new GPSOrderRepository(
builder,
sequenceService
);
}
不幸的是,每次测试都会在数据库中提取该脚本,但是该脚本会创建表,因此在脚本已经执行后,随后的测试中会引发错误。
答案 0 :(得分:0)
H2当前不支持条件执行语句。
因此,您需要检查Java代码中是否存在对象,或者,如果仅使用支持此类子句的命令,则可以尝试在所有命令中添加IF NOT EXISTS
子句。
CREATE TABLE IF NOT EXISTS TABLE_NAME(...);
ALTER TABLE TABLE_NAME ADD CONSTRAINT IF NOT EXISTS CONSTRAINT_NAME ...;