1월 2일-@Autowired와 Mockito의 @InjectMocks의 차이점

Yullgiii·2024년 1월 2일
0
post-thumbnail

@Autowired와 Mockito의 @InjectMocks의 차이점

이 두 어노테이션은 각각의 목적과 사용 상황에 따라 상이하게 사용되며, 테스트 코드를 작성할 때 매우 유용하다.

@Autowired: Spring Framework 의존성 주입

사용처: Spring Framework 내에서 사용.
목적: Spring의 의존성 주입 컨테이너를 통해 자동으로 빈(Bean)을 주입한다.
주요 사용 상황: 실제 어플리케이션 개발 및 통합 테스트 시 주로 사용된다.
작동 방식: 클래스 경로 상의 빈들 중에서 적합한 빈을 찾아 자동으로 연결한다. 주로 @SpringBootTest와 함께 사용된다.

@SpringBootTest
public class BoardServiceTest {

    @Autowired
    private BoardService boardService;

    // ... 테스트 메소드들 ...
}

위 예시에서 BoardService는 Spring이 관리하는 빈으로, @Autowired를 통해 자동 주입된다.

@InjectMocks: Mockito 모의 객체 주입

사용처: Mockito 테스트 프레임워크 내에서 사용.
목적: 지정된 클래스의 인스턴스를 생성하고, 필요한 의존성(모의 객체)을 자동으로 주입한다.
주요 사용 상황: 단위 테스트(Unit Test) 작성 시 주로 사용된다.
작동 방식: @Mock 또는 @Spy 어노테이션으로 선언된 객체들을 테스트 대상 클래스의 인스턴스에 주입한다.

public class ColumnServiceTest {

    @Mock
    private ColumnRepository columnRepository;

    @InjectMocks
    private ColumnService columnService;

    // ... 테스트 메소드들 ...
}

위 예시에서 ColumnService의 인스턴스는 Mockito가 생성하며, ColumnRepository의 모의 객체가 자동으로 주입된다.

차이점 요약:

사용 프레임워크: @Autowired는 Spring에 속하며, @InjectMocks는 Mockito에 속한다.
사용 목적: @Autowired는 실제 빈을 주입하는 데 사용되고, @InjectMocks는 테스트에 필요한 모의 객체를 주입하는 데 사용된다.
적용 범위: @Autowired는 통합 테스트와 실제 어플리케이션 코드에 적합하며, @InjectMocks는 유닛 테스트에 더 적합하다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글