< Go Back

[SPRING] 스프링 프레임워크 데이터베이스 접근 테스트

Spring

Spring에서는 데이터베이스 접근 코드를 테스트할 때 각각의 테스트를 독립적이고 반복 수행 가능하도록 쉽게 만들 수 있다.

테스트 데이터베이스 설정

test/resources/application.properties에 테스트 전용 데이터베이스의 jdbc url을 설정하여 테스트만을 위한 독립적인 공간을 만들자.

그리고 springframework.jdbc의 로깅 레벨을 DEBUG로 설정하여 내부적으로 작업이 잘 수행되는지 확인할 수 있도록 하자.

테스트 환경에서 다른 빈 컨테이너 설정을 해야 한다면 @Profile 어노테이션과 spring.profiles.active 설정값으로 테스트용 프로파일을 사용하도록 할수도 있다.

test/resources/application.properties

spring.profiles.active=test

spring.datasource.url=(jdbc url for test)

logging.level.org.springframework.jdbc=DEBUG

임베디드 데이터베이스 사용

만약 데이터베이스가 임베디드 데이터베이스 기능을 제공한다면 spring.datasource.url 설정부분을 주석처리해도 된다. 이렇게 하면 [[Spring Boot]]가 자동으로 임베디드 데이터베이스를 찾아 데이터소스에 연결해준다.

테스트 설정

@Transactional@SpringBootTest를 테스트 클래스에 추가해주자. 전자는 각 테스트를 트랜잭션으로 만들어주고 후자는 @SpringBootApplication 어노테이션이 붙은 설정클래스를 찾아 설정을 진행해준다.

일반적인 경우에 @Transactional은 각 트랜잭션 마지막에 예외가 발생하지 않으면 트랜잭션을 커밋하지만, @SpringBootTest가 붙은 클래스에 함께 사용하게되면 항상 트랜잭션을 롤백해준다.

@Transactional
@SpringBootTest
class SpringDataTest {
	//...
}