[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)
}
}
위의 예제에서는 MyService
의 performAction
메서드를 테스트하기 위해 DataService
의 구현체를 mocking하고, 해당 메서드가 예상대로 동작하는지를 검증하고 있습니다.
결론
Mockito를 사용하여 코틀린에서의 인터페이스 구현체를 mocking하여 테스트하는 것은 간단하며, 효과적인 방법입니다. 이를 통해 코드의 독립성을 유지하고 테스트 가능한 코드를 작성할 수 있습니다.
참고 자료
- Mockito 공식 문서: https://javadoc.io/doc/org.mockito/mockito-core/latest/index.html
- Mockito GitHub 페이지: https://github.com/mockito/mockito