为什么只有在单元测试时我的Oracle DataSource才会出现重播错误?

时间:2018-11-19 22:42:32

标签: oracle spring-boot jdbc

我的Spring Boot 1.5.17(Spring 4.3.20)服务器可以在bootRun或部署时正常工作。

但是,我有一个Oracle DataSource,它仅在单元测试时会失败

  

java.lang.AssertionError:服务器正在发送非null重播上下文   但是我们的replayModes = []

针对此错误的Google搜索没有确切结果。

我能够使用其他Oracle数据库进行单元测试。

在完整的应用程序测试上下文中我得到了错误

@RunWith(SpringRunner.class)
@SpringBootTest(
        webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
        classes = { TestingUserConfiguration.class, Application.class }
)

以及单个DataSource配置和服务

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {
        MyDbConfig.class,
        MyService.class
})

oracle.jdbc.pool.OracleDataSourceoracle.jdbc.replay.OracleConnectionPoolDataSourceImpl都有错误。 UCP没有影响。

OracleConnectionPoolDataSourceImpl有一个不同的错误:

  

java.sql.SQLException:不支持的功能

尝试从OJDBC 12.2升级到2018.3,没有区别。

有人以前见过此错误吗? 为什么只在Spring单元测试中出现?

2 个答案:

答案 0 :(得分:1)

经过长时间的抓挠,我发现可以在测试套件中进行此操作:

static {
 ClassLoader.getSystemClassLoader().setPackageAssertionStatus("oracle.jdbc.driver", false);  
}

解决了我的问题,我确定这是oracle.jdbc.driver.T4CTTIfun类中的错误

答案 1 :(得分:0)

您可以在您的JAVA_TOOL_OPTIONS中添加“ -da:oracle ...”以关闭oracle断言。为了解决这个问题。

T达