관리 메뉴

피터의 개발이야기

[Spring] Junit 테스트 시 자동 Rollback 설정방법 본문

Programming/Spring

[Spring] Junit 테스트 시 자동 Rollback 설정방법

기록하는 백앤드개발자 2024. 6. 26. 10:10
반응형

ㅁ 들어가며

ㅇ Spring의 테스트 시 자동으로 Rollback 되는 방법을 정리하였다.

 

ㅁ Transactional 어노테이션

ㅇ 테스트 클래스나 테스트 메서드에 @Transactional 어노테이션을 추가한다.

ㅇ 이 어노테이션은 테스트 시작 전에 트랜잭션을 시작하고, 테스트 완료 후 자동으로 롤백을 수행한다.

ㅇ 이렇게 하면 각 테스트가 독립적으로 실행되며, 이전 테스트의 데이터가 다음 테스트에 영향을 주지 않는다.

 

ㅁ Rollback 어노테이션 사용

ㅇ 기본적으로 @Transactional이 적용된 테스트는 롤백되지만, 명시적으로 @Rollback 어노테이션을 사용할 수 있다.

ㅇ @Rollback(true)로 설정하면 테스트 후 롤백이 수행되고, @Rollback(false)로 설정하면 롤백이 수행되지 않는다.

 

ㅁ 샘플 소스

@ActiveProfiles("test")
@SpringBootTest
@Transactional
internal class MemberServiceImplTest @Autowired constructor(
    private var memberRepository: MemberRepository
) {

    @Test
    @Rollback(false)
    fun createTestMember() {
        val member = Member(
            seatNumber = "301",
            workType = WorkType.values().toList().shuffled().first()
        )
        val res = memberRepository.save(member)
        println(res.toString())
    }
}

 

ㅁ 함께 보면 좋은 사이트

ㅇ 참고 소스:  https://github.com/hyunkwanko/seat-reserve-system

테스트 코드(@Test) 실행 후 데이터 rollback 수행 관리 (rollback 수행하기, rollback 수행하지않기)

[JPA] 테스트 코드 실행 후 데이터 rollback 설정하기

 

반응형
Comments