질문&답변
단위테스트, 통합 테스트, 시스템 테스트...
지식공유자는 아니지만 답변을 합니다. @SpringBootTest 가 있으면 통합 테스트일때만 쓰는것인지에 대한 질문을 했습니다. 질문을 반대로 돌려보면 "해당 annotation 이 있으면 단위테스트가 아닌가?"라는 질문을 할 수 있겠습니다. 일단 단위테스트와 통합테스트의 정의부터 명확하게 할 필요가 있다고 생각합니다. 테스트 진영에는 용어에 대하여 서로 명확하게 구분되어 있지는 않기에 다소 주관적인 답변을 합니다. 저는 통합테스트는 단위테스트가 아닌 테스트로 폭 넓게 정의를 합니다. 그러면 단위테스트는 어떠한 테스트인지에 대한 정의를 필요합니다. 클린코드에서는 FIRST 규칙에 대하여 이야기를 합니다. Fast Isolated Repeatable Self-Validating Timely 즉, 빠르고 독립적이며 반복할 수 있고, 자체 검증가능하고 적시에 사용 가능해야 합니다. 이런 특징에 반하여 @SpringBootTest 가 붙으면 일단 테스트 수행이 느려집니다. 왜냐하면 스프링 컨테이너를 띄우기 위해 초기 가동을 하게 되기 때문입니다. 따라서 이 annotation 이 있으면 단위테스트 보다는 통합테스트에 가깝다고 판별할 수 있습니다. 아울러 스프링 부트 레퍼런스 문서의 내용을 추가로 공유합니다. 위에서 @SpringBootTest 가 붙으면 일단 테스트 수행이 느려진다고 했습니다. 그래서 스프링부트를 만든 사람은 어떻게 하면 테스트 속도를 조금이라도 빠를까 고민을 하다가 테스트 슬라이스라는 것을 고안했습니다. @SpringBootTest 를 사용하면 사용하고 있는 여러 의존성을 모두 띄워야 하므로 테스팅 속도가 느릴 수 밖에 없는데 테스트가 필요한 부분만 쪼개서(slice) 테스트를 하면 조금이라도 빠르게 할 수 있기 때문입니다. 자세한 내용은 아래 링크를 참고하세요. Auto-configured Tests Test Slices
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 408





