SeouliteLab

[Java/자바] Mockito를 활용한 단위 테스트 본문

프로그래밍

[Java/자바] Mockito를 활용한 단위 테스트

Seoulite Lab 2024. 3. 20. 08:45

Mockito는 Java에서 단위 테스트를 위한 mocking 프레임워크로, 테스트를 보다 쉽게 작성하고 관리할 수 있게 도와줍니다. Mockito에서 자주 사용되는 애노테이션들인 @Mock, @Spy, @Captor, @InjectMocks에 대해 알아보겠습니다.

@Mock

`@Mock` 애노테이션은 Mockito가 Mock 객체를 생성하도록 지시합니다. 테스트하려는 클래스에 Mock 객체를 주입하고 싶을 때 사용됩니다. 이를 통해 테스트 중에 외부 의존성을 대신하여 테스트를 더욱 간단하게 만들 수 있습니다.

@Mock
private SomeService mockService;

@Spy

`@Spy` 애노테이션은 Mockito가 실제 객체의 일부 메서드를 호출하도록 지시합니다. 객체의 일부 메서드만 가짜(mock)로 대체되고 실제 객체의 나머지 부분은 그대로 유지됩니다.

@Spy
private SomeService spyService;

@Captor

`@Captor` 애노테이션은 Mockito가 Mock 객체에 전달된 인자를 캡처하도록 지시합니다. 주로 메서드 호출에 전달된 매개변수를 확인하는데 사용됩니다.

@Captor
private ArgumentCaptor<String> stringCaptor;

@InjectMocks

`@InjectMocks` 애노테이션은 Mockito가 테스트 대상 클래스에 Mock 또는 Spy 객체를 주입하도록 지시합니다. 테스트 대상 클래스 내에서 필드 주입을 통해 의존성을 주입합니다.

@InjectMocks
private SomeController controller;

예제 코드

public class SomeServiceTest {

    @Mock
    private SomeDependency mockDependency;

    @InjectMocks
    private SomeService serviceUnderTest;

    @Test
    public void testSomeMethod() {
        // Given
        Mockito.when(mockDependency.someMethod()).thenReturn("Mocked Result");

        // When
        String result = serviceUnderTest.someMethod();

        // Then
        Assert.assertEquals("Mocked Result", result);
    }
}