[kotlin] 코틀린 Mockito를 활용한 서비스나 매니저 클래스의 단위 테스트 방법

코틀린을 사용하여 개발하다 보면 다양한 클래스를 테스트해야 할 때가 있습니다. 특히 서비스나 매니저 클래스는 핵심 비즈니스 로직을 포함하고 있는데, 이러한 클래스를 테스트하기 위해서는 외부 의존성을 모의(mock)로 대체할 수 있는 방법이 필요합니다. 이때 Mockito를 활용하여 단위 테스트를 진행할 수 있습니다.

Mockito 라이브러리 추가

우선 build.gradle 또는 build.gradle.kts 파일에 Mockito 라이브러리를 추가해야 합니다.

// build.gradle
dependencies {
    testImplementation("org.mockito:mockito-kotlin:3.2.0")
}

서비스나 매니저 클래스의 단위 테스트 작성

다음으로는 Mockito를 사용하여 서비스나 매니저 클래스의 단위 테스트를 작성할 수 있습니다. 아래는 간단한 예시입니다.

// 테스트 대상 클래스
class MyService(private val userRepository: UserRepository) {
    fun getUser(id: Long): User? {
        return userRepository.findUserById(id)
    }
}

// Mockito를 사용한 테스트
class MyServiceTest {

    private val userRepository = mock<UserRepository>()
    private val myService = MyService(userRepository)

    @Test
    fun `test getUser`() {
        val user = User(id = 1, name = "John")
        `when`(userRepository.findUserById(1)).thenReturn(user)

        val result = myService.getUser(1)

        assertEquals(user, result)
    }
}

위 예시에서는 Mockito를 사용하여 UserRepository 의존성을 대체하고, MyService 클래스의 getUser 메서드를 테스트하는 방법을 보여줍니다.

주의: Mockito의 mock 함수를 사용하기 위해서는 org.mockito.kotlin.mockito 패키지를 임포트해야 합니다.

이렇게 Mockito를 활용하면 외부 의존성을 가진 클래스의 단위 테스트를 보다 간편하게 작성할 수 있습니다.

마무리

이렇게하여 Mockito를 코틀린으로 사용하여 서비스나 매니저 클래스의 단위 테스트를 쉽게 작성하는 방법을 알아보았습니다. Mockito를 사용하면 외부 의존성을 가진 클래스의 테스트를 보다 쉽게 작성할 수 있으며, 테스트 코드의 가독성과 유지보수성을 높일 수 있습니다.

더 많은 Mockito 기능 및 활용 방법은 Mockito 공식 문서에서 확인할 수 있습니다.

Happy testing! 🚀