Tech/Spring

SpringBootTest : 데이터베이스 분리

봄의 개발자 2023. 12. 11.
728x90
반응형
  • 로컬에서 사용하는 애플리케이션 서버와 테스트에서 같은 데이터베이스를 사용하고 있으니 테스트에서 문제가 발생함
  • 테스트를 다른 환경과 철저하게 분히해야 함
  • 테스트 전용 데이터베이스를 별도로 운영하는 것임

testcase 데이터베이스 새로 생성해서 연결해줌

 

 

현재 JdbcTemplate를 사용해서 findItems를 구현한 상태이다. (추후 업로드 예정)
findItems: 전체 아이템 조회 쿼리 

 

findItems 만 최초 실행한 경우에는 성공한다.

 

 

  • 이후에 다른 테스트와 함께 실행하면 이렇게 에러가 발생한다.
  • 처음 테스트를 실행할 때 저장한 데이터가 계속 남아있기 때문에 두번째 테스트에 영향을 준 것임

 

 

 

 

  • save()에서도 동일한 문제가 발생할 것이다.
  • 이 문제를 해결하려면 각 테스트가 끝날 때마다 해당 테스트에서 추가한 데이터를 삭제해야 한다.

 

💡 테스트는 다른 테스트와 격리해야 한다.
💡 테스트는 반복해서 실행할 수 있어야 한다.

 

 

  • 이를 해결하는 방법은 스프링의 @BeforeEach, @AfterEach를 통해 트랜잭션을 롤백 시켜주거나 @Transactional 어노테이션을 사용하면 된다. 순서대로 알아볼 예정이다.
728x90
반응형

댓글