[kotlin] Mockito를 사용하여 코틀린에서의 인터페이스 구현체(mocking) 테스트하기

코틀린에서는 Mockito를 사용하여 인터페이스 구현체를 mocking하여 테스트할 수 있습니다. 이를 통해 모의 객체를 사용하여 특정 메서드가 호출되었는지, 어떻게 호출되었는지 등을 검증할 수 있습니다.

Mockito 라이브러리 추가

먼저, build.gradle 파일에 Mockito 라이브러리를 추가합니다.

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

라이브러리 추가 후, 프로젝트를 동기화합니다.

Mockito를 사용한 테스트 예제

다음은 Mockito를 사용하여 코틀린에서의 인터페이스 구현체를 mocking하여 테스트하는 간단한 예제입니다.

의존성 주입 코드

interface DataService {
    fun retrieveData(): String
}

class MyService(private val dataService: DataService) {
    fun performAction(): String {
        val data = dataService.retrieveData()
        // ... other logic
        return "Data: $data"
    }
}

Mockito를 사용한 테스트 코드

import org.junit.jupiter.api.Test
import org.mockito.Mockito.`when`
import org.mockito.Mockito.mock
import kotlin.test.assertEquals

class MyServiceTest {
    
    @Test
    fun `test performAction`() {
        // 모의 객체 생성
        val dataService = mock(DataService::class.java)
        
        // 모의 동작 정의
        `when`(dataService.retrieveData()).thenReturn("Test data")
        
        // 테스트 대상 객체 생성
        val myService = MyService(dataService)
        
        // 테스트 수행
        val result = myService.performAction()
        
        // 결과 검증
        assertEquals("Data: Test data", result)
    }
}

위의 예제에서는 MyServiceperformAction 메서드를 테스트하기 위해 DataService의 구현체를 mocking하고, 해당 메서드가 예상대로 동작하는지를 검증하고 있습니다.

결론

Mockito를 사용하여 코틀린에서의 인터페이스 구현체를 mocking하여 테스트하는 것은 간단하며, 효과적인 방법입니다. 이를 통해 코드의 독립성을 유지하고 테스트 가능한 코드를 작성할 수 있습니다.

참고 자료