Backend/Spring1 @Transactional: 테스트 코드와 서비스 코드의 동작 차이 회원가입 테스트 코드를 작성하고 실행하는 강의를 보면서 공부하다가 강사님이 @Transactional 어노테이션을 주석처리하고 테스트를 돌린 것을 못 보고 "왜 나는 테스트 결과를 DB에서 확인할 수 없지?"라고 당황했다. 원인은 테스트 클래스 위에 붙여놓은 @Transactional 때문이었다.@SpringBootTest@Transactional // "트랜젝션 처리를 해야 하니깐 붙여야지"라고 아무 생각 없이 사용했는데, 알고 보니 스프링은 테스트 환경에서 @Transactional을 다르게 취급하고 있었다. 서비스 계층에서는 로직이 성공적으로 끝나면 DB에 커밋하고 예외가 터지면 롤백하지만,테스트 계층에서는 테스트가 성공하든 실패하든 무조건 롤백한다.즉, 테스트가 끝나자마자 스프링에서 테스트에서.. 2026. 2. 1. 이전 1 다음