inmemory 데이터베이스에서 실행되는 통합 테스트가 있습니다.@Sql이있는 @SpringBootTest : 스크립트 실행 및 컨텍스트 초기화 순서
spring:
jpa:
hibernate:
ddl-auto: create-drop
내가 SQL 스크립트의 초기화 후에 실행을 기대하십시오 DB 스키마가 Hibernate에 의해 재 작성되는 테스트 컨텍스트 초기화하는 동안
@RunWith(SpringRunner.class)
@SpringBootTest
@Sql("/clean-data-in-all-tables.sql")
public class SomeTest {
@Test
public void shouldDoSomehting() {}
}
: 각 테스트의 서명이 더 많거나 적은 같은 외모 문맥 및 db 스키마 생성 이후. 그러나 어떤 경우에는 clean-data-in-all-tables.sql
이 스키마 생성 전에 실행되고 아직 생성되지 않은 테이블을 예상하기 때문에 실패합니다.
필자는 설명 된 방식으로 500 가지 이상의 테스트를 작성했으며 몇 가지 유사한 테스트를 추가 할 때까지 모두 잘 작동했습니다.
Gradle 또는 IntelliJ를 통해 함께 실행하면 테스트가 실패합니다. 실패한 테스트는 최근에 추가 된 테스트가 아닙니다. 이것은 내가 추가 한 테스트와 완전히 관련이없는 오래된 테스트입니다. 또한 이상한 점은을 통해 IntelliJ를 하나씩 실행하면 테스트가 제대로 작동하지 않는다는 것입니다.
스프링 부트의 버그처럼 보입니다.하지만 여전히 해결 방법을 찾으려고합니다. 동시에 나는이 문제를 해결하기 위해 많은 것들을 시도했지만 아무도 도움이되지 못했습니다.
내 코드에 무엇이 잘못 될 수 있는지에 대한 아이디어를 공유하십시오.
UPDATE : 해결 실측치 : create
에 create-drop
에서 spring.jpa.hibernate.ddl-auto
변화 문제를 해결한다.
그러나 질문은 여전히 열려 있습니다. 이러한 이상한 행동의 이유는 무엇입니까?
새로운 구성을 추가 했습니까? SpringBootTest는 테스트 패키지에서 프로젝트 루트까지 구성을 찾고 있습니다. –
아니요, 새로운 구성을 도입하지 않았으며 기존 구성을 변경하지 않았습니다. –