[java] Mockito를 사용한 의존성 주입 테스트

의존성 주입 테스트는 모의 객체(Mock Objects)를 사용하여 특정 클래스나 메소드의 독립적인 단위를 테스트하는 방법 중 하나입니다. Mockito는 자바에서 모의 객체를 사용할 수 있도록 도와주는 라이브러리입니다. 이를 사용하여 의존성 주입을 테스트하는 방법을 살펴보겠습니다.

Mockito 라이브러리 추가

먼저 Maven이나 Gradle을 사용하여 프로젝트에 Mockito 라이브러리를 추가해야 합니다.

Maven을 사용하는 경우:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>3.11.2</version>
    <scope>test</scope>
</dependency>

Gradle을 사용하는 경우:

testImplementation 'org.mockito:mockito-core:3.11.2'

의존성을 추가한 후에는 프로젝트를 다시 빌드해야 합니다.

Mockito를 사용한 의존성 주입 테스트 예제

다음은 Mockito를 사용하여 의존성 주입을 테스트하는 예제 코드입니다.

import static org.mockito.Mockito.*;

public class UserServiceTest {

    @Test
    public void testGetUser() {
        // Mocking the dependencies
        UserRepository userRepository = mock(UserRepository.class);
        
        // Stubbing the behavior of the mocked object
        when(userRepository.getUserById(1)).thenReturn(new User("John Doe"));

        // Injecting the mocked dependency
        UserService userService = new UserService(userRepository);

        // Testing the method which uses the injected dependency
        User user = userService.getUserById(1);

        // Assertions
        assertEquals("John Doe", user.getName());
    }
}

위의 예제에서 UserRepository 인터페이스를 모의(mock)하여 getUserById 메소드의 행동을 설정한 후, 이를 사용하여 UserService 클래스를 생성하고 테스트하였습니다.

이와 같이 Mockito를 사용하면 의존성 주입을 테스트할 때 외부 리소스에 의존하지 않고 모의 객체를 사용하여 테스트할 수 있습니다.

의존성 주입 테스트는 코드 변경이나 리팩토링 등에 따른 부작용을 최소화하고 안정성을 높일 수 있는 중요한 테스트 방법 중 하나입니다.

의존성 주입에 대한 자세한 내용은 Mockito 문서를 참고하세요.

의존성 주입 테스트에 대해 더 알고 싶다면 의존성 주입 테스트 전략에 대한 포워의 내용을 살펴보시기를 추천드립니다.