spring

@Mock

seungmin576 2025. 2. 24. 13:29

Mockito 라이브러리를 사용하여 목 객체를 생성하기 위해 사용되는 어노테이션이다.

목 객체는 실제 객체의 동작을 모방하는 가짜 객체로, 단위 테스트에서 사용된다.

이렇게 함으로써 의존성에 대한 복잡성을 줄이고, 테스트하려는 코드에만 집중할 수 있게 된다.

 

예시

import static org.mockito.Mockito.*;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.junit.jupiter.api.Assertions.*;

class MyServiceTest {

    @Mock
    private DependencyService dependencyService;

    @InjectMocks
    private MyService myService;

    @Test
    void testDoSomething() {
        MockitoAnnotations.openMocks(this);
        
        // 목 객체의 동작 설정
        when(dependencyService.someMethod()).thenReturn("Mocked Response");

        String result = myService.doSomething();

        // 결과 검증
        assertEquals("Mocked Response", result);
    }
}

@Mock 어노테이션은 DependencyService를 목 객체로 생성하고,

@InjectMocks 어노테이션은 이 목 객체를 MyService에 주입한다.

이를 통해 MyService doSomething 메서드를 테스트할 때 실제 DependencyService의 동작 대신 목 객체의 동작을 사용하게 된다.