[java] Mockito를 사용한 레거시 코드 테스트하기

레거시 코드는 변경하기 어렵고 테스트하기도 어려운 경우가 많습니다. 하지만 Mockito를 사용하면 레거시 코드를 손쉽게 테스트할 수 있습니다. 이번 포스트에서는 Mockito를 활용하여 레거시 코드를 테스트하는 방법에 대해 알아보겠습니다.

Mockito란?

Mockito는 자바를 기반으로한 테스트 더블(Mock, Stub, Spy 등)을 만들기 위한 오픈 소스 프레임워크입니다. Mockito를 사용하면 실제 객체를 사용하지 않고도 가짜 객체를 생성하여 테스트할 수 있습니다.

Mockito를 이용한 레거시 코드 테스트하기

1. 의존성 추가

먼저 Mockito를 프로젝트에 추가해야 합니다.

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

의존성을 추가한 후에는 Mockito를 사용하여 레거시 코드를 테스트할 준비가 끝납니다.

2. 레거시 코드의 의존 객체(Mock) 생성

레거시 코드가 의존하는 객체가 있다면 Mockito를 사용하여 해당 객체를 Mock으로 만들어야 합니다. 예를 들어, UserService가 UserRepository에 의존한다면 다음과 같이 UserRepository의 Mock 객체를 만들어줍니다.

@RunWith(MockitoJUnitRunner.class)
public class UserServiceTest {
    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserService userService;

    @Test
    public void testGetUserById() {
        // UserRepository의 Mock 객체 활용하여 UserService를 테스트
    }
}

3. 테스트 작성

Mockito를 사용하여 레거시 코드를 테스트하기 위해 필요한 Mock 객체를 생성하고, 테스트 케이스를 작성합니다. 이때 Mock 객체를 통해 레거시 코드가 예상대로 동작하는지 확인합니다.

@Test
public void testGetUserById() {
    // UserRepository의 Mock 객체를 활용하여 getUserById() 테스트
    when(userRepository.getUserById(1)).thenReturn(new User(1, "John Doe"));
    User user = userService.getUserById(1);
    assertEquals("John Doe", user.getName());
}

위 예제에서는 UserRepository의 Mock 객체를 사용하여 getUserById() 메서드를 호출하고, 이를 통해 userService가 올바르게 동작하는지 확인하고 있습니다.

결론

Mockito를 사용하면 레거시 코드를 테스트하는 것이 더욱 쉬워집니다. Mockito를 활용하여 레거시 코드를 안정적으로 유지하고 변경 사항에 대한 안전성을 확보할 수 있습니다.

마지막으로, Mockito 공식 홈페이지 링크를 방문하여 더 많은 정보를 확인하세요.