Skip to main content Link Search Menu Expand Document (external link) Copy Copied

서비스 테스트와 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 테스트를 수행할 수 있다.


실습자료

GitHub