在服务器上运行集成测试时访问数据库视图时发生错误,该测试在PC上正常运行



我正在运行一个集成测试,它在执行之前创建一些数据库结构,并用测试数据填充它。
此外,我的方法通过JDBC访问视图并从中检索数据。
在构建期间在服务器上运行集成测试时,我经常得到视图不存在的错误。在PC上运行时,不会出现此问题。

你能提出可能的原因吗?

技术:
Java 8
postgres 13
Spring 5

测试例子:

@Sql(
scripts = {
"drop-shema.sql", 
"create-schema.sql", 
"create-tables.sql", 
"add-constraints.sql",
"create-view.sql",
"inser-data.sql"
},
config = @SqlConfig(transactionMode = TransactionMode.ISOLATED))
@Test
public void foo() { 
List<Bar> bars = selectBarDao.exec();
...
}

我测试过的假设,这些假设对我没有帮助:

  1. 并行启动会产生问题,因为服务器的CPU比我的PC多。
    检查:
    *)在@SQL注释中增加了参数config = @SqlConfig(transactionMode = transactionMode . isolated)
    b)在测试类上方增加了@Transaction注释。因此,在本例中,数据库结构在我的测试中被清理并完全创建。
    其他测试的并行启动不能干扰,因为他在其他事务中
    c)禁用多线程运行测试

  2. @SQL注释不会通知我脚本中的错误,例如无法创建视图。
    Check:从@SQL中删除脚本以清理结构。在PC上运行时,出现错误。

  3. 同一@SQL注释内的脚本执行顺序混淆
    检查:将多个文件合并到一个

假设(1)是正确的。

我修复了一个问题,当在两个模式上的两个模块中分开测试时,开始传递模式名称作为参数。
换句话说,在package_1的测试中,我被传递到方法使用schema_1package_2的测试中,我被传递到方法使用schema_2

最新更新