새소식

스프링

[매일메일] 단위 테스트 vs 통합 테스트

  • -

 단위 테스트는 개별 메서드나 함수의 기능을 검증하는 테스트로, 독립적이고 빠르게 실행된다. 다른 계층과의 결합 없이 독립적으로 실행되어야 하므로 만약 서비스 계층에서 레포지토리 주입받아야 한다면 이때 레포지토리 목 객체를 사용하여 테스트할 수 있다.

 

 하지만 통합 테스트는 개별 모듈들이 결합되어 전체 시스템이 올바르게 동작하는지 검증하는 테스트로 실제 데이터베이스, 네트워크 등의 외부 시스템과의 통합을 테스트할 수 있다. DB 저장을 확인하기 위해 H2 DB를 연동해서 하는 테스트도 일종의 통합 테스트로 볼 수 있다.

 

슬라이스 테스트란?

슬라이스는 특정 계층에 대한 테스트로, 예를 들어 conroller, service, repository가 있다. 이때 스프링의 특정 컴포넌트만 로드해서 테스트할 수 있으므로 상대적으로 빠르게 실행이 가능하다. 관련된 어노테이션으로는 @WebMvcTest, @DataJpaTest 등이 있다.

 

 @WebMvcTest를 간단히 설명하자면 스프링의 MVC 컨트롤러를 테스트할 때 사용하고 내장된 MockMvc를 사용해 HTTP 요청과 응답을 쉽게 테스트할 수 있다. MockMvc를 주입받아 사용하고 필요한 경우 MockBean도 사용하여 다른 빈들을 목 객체로 주입받을 수 있다.

 

@DataJpaTest는 JPA 관련 테스트를 위한 슬라이스 테스트 어노테이션이다. @Transactional 등을 포함해 다양한 자동 설정을 포함하고 있다.

 

테스트 코드를 작성하면 버그를 조기에 발견할 수 있으며 리팩터링을 수행할 경우 유용하다. 또한, 개발 속도를 향상 시킬 수 있으며 코드에 대한 문서로서 역할을 수행할 수 있다.

 

그러니까 테스트 공부도 열심히 하자...

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.