我试图在单元测试中使用@sql和@sqlgroup。我有2个测试用例,分别是testA和testB。 testA的sqlgroup是
@SqlGroup({
@Sql(value = "classpath:test/scripts/testA-service/before-test.sql",
executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
@Sql(value = "classpath:test/scripts/testA-service/before-testA.sql",
executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
@Sql(value = "classpath:test/scripts/testA-service/after-test.sql",
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
})
testB的sqlgroup是
@SqlGroup({
@Sql(value = "classpath:test/scripts/testB-service/before-test.sql",
executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
@Sql(value = "classpath:test/scripts/testB-service/before-testB.sql",
executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
@Sql(value = "classpath:test/scripts/testB-service/after-testB.sql",
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD),
@Sql(value = "classpath:test/scripts/testB-service/after-testB.sql",
executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
})
在before-testA.sql中,我在名为TABLE1的表中插入一些随机值。在testA-service的after-test.sql中,我截断了TABLE1。
在testB服务的before-test.sql中,如果存在TABLE1,则将其删除,然后再次创建它。我再次在表1中插入一些随机值。在testB-service的after-test.sql中,我截断了TABLE1。
在运行测试用例testB时,正在使用的TABLE1中的值不是第二次插入的。而是使用第一次插入的值。
我正在使用HSQLdb。此问题不是在本地出现,而是在prod / dev服务器中出现。
答案 0 :(得分:0)
如果这是一个进程内文件:数据库,并且两个测试是两个单独的进程,请确保在第一个测试的AFTER_TEST结束时执行“ SHUTDOWN”。
使用HSQLDB服务器 hsql:连接,或者当两个测试在同一Java进程中并且您的数据库是 mem:时,“ SHUTDOWN”不应为被执行。在第二种情况下,它将失去第一种测试所完成的一切。