슬라이서 테스트랑 Mocking의 차이

이규훈·2023년 9월 28일

슬라이서 테스트

"슬라이서 테스트"는 Spring Boot에서 제공하는 기능 중 하나로, 전체 애플리케이션을 실행하는 대신 애플리케이션의 특정 부분만을 대상으로 테스트를 실행할 수 있게 해줍니다. 이를 통해 테스트의 실행 시간을 줄이고, 관련된 컴포넌트만을 대상으로 한 테스트를 수행할 수 있습니다.

Spring Boot는 다양한 종류의 슬라이서 테스트를 지원합니다. 예를 들면:

  1. @WebMvcTest: 웹 계층을 대상으로 한 테스트를 위한 어노테이션입니다. 이를 사용하면 웹 컨트롤러만을 로드하여 테스트할 수 있습니다.
  2. @DataJpaTest: JPA 컴포넌트를 대상으로 한 테스트를 위한 어노테이션입니다. 이를 사용하면 JPA 관련 설정과 엔터티만을 로드하여 테스트할 수 있습니다.
  3. @RestClientTest: REST 클라이언트를 대상으로 한 테스트를 위한 어노테이션입니다.
  4. @JsonTest: JSON 직렬화와 역직렬화를 대상으로 한 테스트를 위한 어노테이션입니다.

이 외에도 여러 가지 슬라이서 테스트 어노테이션들이 있습니다. 각 어노테이션은 특정 계층이나 기능을 대상으로 한 테스트를 위해 필요한 빈들만을 로드하므로, 테스트의 실행 시간을 단축시킬 수 있습니다.

슬라이서 테스트를 사용하면, 애플리케이션의 특정 부분만을 대상으로 빠르게 테스트를 수행할 수 있어, 개발 및 디버깅 과정에서 매우 유용합니다.

Mocking이랑의 차이

"Mocking"과 "슬라이서 테스트"는 모두 테스트를 위한 기법이지만, 그 목적과 사용 방식에는 몇 가지 차이점이 있습니다.

  1. 목적:

    • Mocking: Mocking은 실제 객체를 사용하는 대신 가상의 객체(mock 객체)를 사용하여 테스트를 수행하는 기법입니다. Mock 객체는 실제 객체의 행동을 모방하며, 테스트 중에 특정 메서드의 반환값이나 행동을 예측하도록 설정할 수 있습니다. 이를 통해 외부 시스템, 데이터베이스, 네트워크 호출 등과 같은 의존성을 가진 코드를 테스트할 때 실제 의존성을 호출하지 않고도 테스트를 수행할 수 있습니다.
    • 슬라이서 테스트: 슬라이서 테스트는 애플리케이션의 특정 부분(예: 웹 계층, 데이터 액세스 계층)만을 대상으로 테스트를 수행하는 기법입니다. 이를 통해 전체 애플리케이션을 로드하는 대신 필요한 부분만을 로드하여 테스트의 실행 시간을 줄일 수 있습니다.
  2. 사용 방식:

    • Mocking: Mocking 프레임워크(예: Mockito, PowerMock 등)를 사용하여 mock 객체를 생성하고, 이 mock 객체의 행동을 설정합니다. 그런 다음, 테스트 대상 코드에 이 mock 객체를 주입하여 테스트를 수행합니다.
    • 슬라이서 테스트: Spring Boot에서 제공하는 특정 어노테이션(예: @WebMvcTest, @DataJpaTest 등)을 사용하여 특정 계층만을 대상으로 테스트를 수행합니다.
  3. 적용 대상:

    • Mocking: 특정 의존성을 가진 코드나 외부 서비스와의 상호작용을 테스트할 때 주로 사용됩니다.
    • 슬라이서 테스트: 애플리케이션의 특정 계층(예: 웹 계층, 데이터 액세스 계층)을 독립적으로 테스트할 때 주로 사용됩니다.

결론적으로, Mocking은 테스트의 의존성을 제거하거나 제어하기 위한 기법이며, 슬라이서 테스트는 애플리케이션의 특정 부분만을 대상으로 테스트를 수행하기 위한 기법입니다. 두 기법은 서로 다른 목적과 사용 방식을 가지며, 테스트의 요구 사항에 따라 적절하게 선택하여 사용할 수 있습니다.

profile
개발취준생

0개의 댓글