[kotlin] Kodein 유닛 테스트

Kodein은 Kotlin에서 사용되는 경량의 의존성 주입 프레임워크입니다. Kodein을 사용하면 코드의 의존성을 관리하고 주입할 수 있으며, 단위 테스트 작성 시에도 유용하게 활용될 수 있습니다.

Kodein 설정

먼저, Kodein을 사용하기 위해서는 프로젝트에 Kodein을 추가하여 설정해야 합니다. Gradle을 사용한다면 아래와 같이 의존성을 추가할 수 있습니다:

dependencies {
    implementation "org.kodein.di:kodein-di-generic-jvm:7.1.0"
    implementation "org.kodein.di:kodein-di-framework-jvm:7.1.0"
}

Kodein 유닛 테스트 작성

다음으로, Kodein을 사용하여 유닛 테스트를 작성해보겠습니다. 예를들어, 다음과 같이 UserService 클래스가 있다고 가정해봅시다.

class UserService(private val userRepository: UserRepository) {
    fun getUser(id: String): User? {
        return userRepository.findUserById(id)
    }
}

UserService 클래스는 UserRepository를 의존하여 사용하고 있습니다. 이제 UserService 클래스의 유닛 테스트를 작성해보겠습니다.

import org.kodein.di.generic.instance
import org.kodein.di.Kodein
import org.kodein.di.KodeinAware
import org.kodein.di.generic.bind
import org.kodein.di.generic.provider

class UserServiceTest : KodeinAware {
    override val kodein = Kodein {
        bind<UserRepository>() with provider { InMemoryUserRepository() }
    }

    val userService: UserService by instance()

    @Test
    fun `test get user by id`() {
        val user = userService.getUser("123")
        assertEquals("123", user?.id)
    }
}

위의 코드에서는 UserService 클래스의 유닛 테스트를 위해 KodeinAware 인터페이스를 구현하고, Kodein 객체를 생성하여 UserService 클래스에 필요한 의존성을 설정하고 있습니다.

마치며

Kodein을 사용하여 Kotlin 프로젝트에서 의존성 주입을 관리하고 유닛 테스트를 작성하는 방법을 살펴보았습니다. Kodein은 간편한 사용법과 유연한 설정으로 Kotlin 개발자들에게 의존성 주입을 위한 좋은 도구가 될 것입니다.

더 많은 정보를 원하시거나 Kodein에 대해 더 자세히 알고 싶다면 Kodein 공식 문서를 참고하시기 바랍니다.

참고 문헌: