Spring-boot数据源提交麻烦

bur*_*ete 22 java datasource spring-boot

我的应用程序使用Spring-Boot 1.4.1.RELEASE,我的数据源配置如下;

spring:
  datasource:
    url: ***
    username: ***
    password: ***
    driver-class-name: oracle.jdbc.driver.OracleDriver
    initial-size: 1
    max-active: 100
    max-idle: 30
    min-idle: 1
    max-wait: 0
    pool-prepared-statements: true
    max-open-prepared-statements: 3
Run Code Online (Sandbox Code Playgroud)

问题是我的集成测试的最后一种情况,如果它包含一个@Sql设置逻辑,则无法提交最后一次设置SQL.由于案例的重新排序,很少发生这种麻烦,而且只有少数案例需要设置逻辑来准备DB.没有配置,只有OracleDB的配置,而且在ConfigClass.

@SpringBootTest(classes = ConfigClass.class)
public class EtcTest {

    @After
    public void teardown() {
        // teardwon X, Y, & Z
    }

    @Test
    @Sql("setupX.sql")
    @Sql("setupY.sql")
    @Sql("setupZ.sql")
    public void get_fromDb() {
        List<Etc> list = buildExpectedList();
        Obj expected = buildExpected();
        Obj actual = getCallToAPI();

        assertThat(rs.getX()).isEqualTo(expected.getX());
        assertThat(rs.getY()).isEqualTo(expected.getY());
        assertThat(rs.getZ()).containsAll(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,在上述情况下,如果它是最后一个集成的情况,它无法提交@Sql注释中的最后一个SQL ,即SetupZ.sql数据没有完全丢失,它插入主键,有时columnA,或者columnB,这就好像有些事情是错的.

某些配置的存在与否会导致这种情况吗?如果不是,那是什么原因?

bur*_*ete 0

这是由于 JUnit 和 Spring/Hibernate 中存在一些冲突的库。更新到最新的 Spring 和 Junit 版本并更新到 Java8 后,问题就消失了。