[kotlin] 코틀린에서 Mockito를 활용하여 테스트 데이터의 변형(mocking) 방법

코틀린으로 작성한 코드의 유닛 테스트를 진행할 때 외부 의존성을 가진 코드를 테스트할 때 가짜 객체를 활용합니다. 이때 Mockito 라이브러리가 테스트 도구로 사용됩니다. Mockito를 사용하여 외부 의존성을 테스트하는 방법을 알아보겠습니다.

Mockito 라이브러리 추가하기

먼저, Mockito 라이브러리를 프로젝트에 추가해야 합니다. Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    testImplementation 'org.mockito:mockito-core:3.12.4'
}

Gradle을 사용하지 않는 경우, Mockito의 JAR 파일을 다운로드하여 프로젝트에 추가할 수도 있습니다.

Mockito를 사용한 Mocking

다음으로는 Mockito를 사용하여 테스트 데이터의 변형을 하는 방법을 알아보겠습니다. 예를 들어, UserService 클래스의 외부 의존성으로 UserRepository를 사용하는 경우를 가정해봅시다.

class UserService(private val repository: UserRepository) {
    fun getUserInfo(userId: String): String {
        val userInfo = repository.getUserInfo(userId)
        return "User Info: $userInfo"
    }
}

UserService를 테스트하는 경우에 UserRepository를 Mocking하여 가짜 객체를 만들어 사용할 수 있습니다.

import org.junit.Assert.assertEquals
import org.junit.Test
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock

class UserServiceTest {
    @Test
    fun testGetUserInfo() {
        val mockRepository = mock(UserRepository::class.java)
        `when`(mockRepository.getUserInfo("123")).thenReturn("John Doe")

        val userService = UserService(mockRepository)
        val result = userService.getUserInfo("123")

        assertEquals("User Info: John Doe", result)
    }
}

위의 예시에서는 Mockito의 mock 함수를 사용하여 UserRepository의 가짜 객체를 만들고, when 함수를 사용하여 특정 메서드가 호출될 때 어떤 값을 반환하도록 지정합니다. 그 후에 UserService를 테스트하는데 사용할 수 있습니다.

결론

코틀린에서는 Mockito를 사용하여 외부 의존성을 테스트하는 코드를 작성할 수 있습니다. Mockito를 이용하면 외부 의존성을 갖는 코드를 손쉽게 테스트할 수 있으며, 테스트 대상 코드의 행위를 가짜로 설정하여 다양한 테스트 케이스를 시도할 수 있습니다.

위 내용은 Mockito 라이브러리를 활용한 테스트 데이터의 변형 방법에 대한 간단한 소개입니다. Mockito를 활용한 보다 심도 있는 활용법은 Mockito 공식 문서를 참고하시기 바랍니다.

Mockito 공식 사이트