단위 테스트 vs. 통합 테스트
기존에 진행했던 테스트는 순수한 자바 코드를 가지고 진행하는 단위 테스트라고 하며, 자바 JVM 안에서 이루어지기 때문에 실행 시간이 굉장히 빠르다. 스프링을 띄워서 DB와 연결하여 테스트하는 것은 통합테스트라고 하며, 스프링 실행이 되어야 하기 때문에 단위테스트보다 비교적 느리다. 실무에서 테스트 DB를 따로 구축하기 때문에 운영 DB에는 영향이 없다.
하지만 컨테이너까지 올려서 테스트하는 상황은 최대한 만들지 않는 것이 좋다. 최대한 단위를 쪼개서 단위 테스트를 많이 하는 습관을 들이자.
@Transactional
스프링이 테스트할 때는 테스트 클래스에 @SpringBootTest 어노테이션과 @Transactional 어노테이션 두가지를 적어주어야 한다. @SpringBootTest 어노테이션은 말 그대로 스프링 테스트 클래스를 나타내는 어노테이션이며, @Transactional 어노테이션을 달아두면 테스트를 완료한 후 실제로 DB에 커밋되지 않고 롤백되도록 한다.
직접 테스트를 작성할 때에는 beforeEach(), afterEach() 함수를 만들어 DB 데이터를 지워주는 작업을 반복적으로 진행했는데, 이 트랜잭셔널 어노테이션을 달아두면 한줄로 해결할 수 있다. 데이터를 넣었다가 삭제하는 개념이 아니라 트랜잭션 커밋을 진행하지 않는 것이기 때문에 delete가 누락될 일이 없이 더 깔끔하다.
이 포스팅은 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 수강하며 작성되었습니다.
[지금 무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 - 인프런
스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세
www.inflearn.com
'Spring Framework' 카테고리의 다른 글
[스프링 입문] AOP (0) | 2024.03.24 |
---|---|
[스프링 입문] 스프링 DB 접근 기술 (0) | 2024.03.05 |
[스프링 입문] 웹 MVC 개발 (0) | 2024.01.25 |
[스프링 입문] 스프링 빈과 의존관계 (0) | 2024.01.22 |
[스프링 입문] 회원 관리 백엔드 개발 (0) | 2024.01.21 |