내 응용 프로그램은 스프링 부트 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
문제는 마지막 설정 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);
}
}
는 마지막으로 통합하는 경우라면 위의 경우에 예를 들어, 문제는, 그것은 즉 SetupZ.sql
@Sql
주석의 마지막 SQL을 커밋 실패,하지만 데이터가 완전히 누락 된 것이 아니라,을 기본 키를 삽입하고 경우에 따라 columnA
또는 columnB
을 삽입합니다. 여기서 실제로 잘못된 것입니다.
일부 구성의 존재 여부에 따라이 문제가 발생합니까? 이유가 무엇이 아닌가?
, 당신은 읽어야 참조 [릴리스 노트 (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4 -Release-Notes), 특히 [이 섹션] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes#datasource-binding)을 참조하십시오. 모든 연결 풀 관련 설정이 전용 네임 스페이스로 이동했습니다. 구성을 검토하십시오. –
@StephaneNicoll 동일한 버전을 사용했지만, 변경 사항은 junit의 주석 전후에 주석이 달린 일부 설정 및 분해 방법을 추가 한 것뿐이었습니다. 어떻게 든 빌드가 non-db 관련 테스트를 마지막에 넣었을 때 마지막 빌드를 성공적으로 수행했습니다. 이제 마지막 case와 동일한 non-commit 문제가 다시 발생합니다. –
Oracle 9i 이후에는'oracle.jdbc.driver.OracleDriver' 대신 Oracle oracle.jdbc.driver.OracleDriver를 사용해야합니다. –