서비스 테스트와 Mock 객체 사용
Service를 테스트할 때, 테스트가 Repository에 종속되지 않도록 Mock 객체를 사용해 분리하는 것이 중요하다.
Spring Boot에서는 Mockito를 사용하여 Mock 객체를 제공한다.
@ExtendWith(MockitoExtension.class)
: 클래스에 추가하여 Mockito 설정을 활성화한다.@Mock
: 사용할 객체를 Mock으로 설정하여 가짜 객체를 주입한다.@MockBean
: 사용할 Bean을 MockBean으로 설정하여 가짜 객체를 주입한다.
단위 테스트와 통합 테스트
- 단위 테스트: 하나의 모듈이나 클래스에 대해 세밀하게 테스트한다.
- 통합 테스트: 두 개 이상의 모듈 간 연결에서 발생하는 오류를 검증할 수 있다.
Spring Boot를 이용한 통합 테스트
통합 테스트에서는 여러 단위 테스트를 하나의 통합된 테스트로 수행한다. 단위 테스트 시에는 Spring이 동작하지 않지만, 통합 테스트에서는 실행된다.
테스트 종류에 따른 어노테이션 사용
- Service 테스트:
@ExtendWith(MockitoExtension.class)
과@Mock
으로 Mockito 설정 - Controller 테스트:
@WebMvcTest
사용 - 모듈 간 통합 테스트:
@SpringBootTest
사용
@SpringBootTest
Spring이 정상적으로 동작하는지 확인하는 어노테이션으로, 이 어노테이션이 적용된 테스트는 IoC/DI 기능을 활용하고 레포지토리를 사용한 CRUD 테스트를 수행할 수 있다.