Skip to content

테스트 용이성

라이브러리 테스트 (testing your library) 외에도, 라이브러리를 사용하는 코드가 테스트 가능하도록 보장해야 합니다.

전역 상태 및 상태 저장 최상위 함수 피하기

여러분의 라이브러리는 전역 변수의 상태에 의존하거나 공개 API의 일부로 상태 저장 최상위 함수를 제공해서는 안 됩니다. 이러한 변수와 함수는 테스트가 전역 값을 제어할 방법을 찾아야 하므로 라이브러리를 사용하는 코드의 테스트를 어렵게 만듭니다.

예를 들어, 라이브러리가 현재 시간에 대한 접근을 제공하는 전역적으로 접근 가능한 함수를 정의할 수 있습니다.

kotlin
val instant: Instant = Clock.now()
println(instant)

이 API를 사용하는 모든 코드는 테스트하기 어려울 것입니다. now() 함수 호출이 항상 실제 현재 시간을 반환하는 반면, 테스트에서는 가짜 값을 반환하는 것이 종종 바람직하기 때문입니다.

테스트 용이성을 확보하기 위해, kotlinx-datetime 라이브러리는 사용자가 Clock 인스턴스를 얻은 다음 이를 사용하여 현재 시간을 가져올 수 있도록 하는 API를 제공합니다.

kotlin
val clock: Clock = Clock.System
val instant: Instant = clock.now()
println(instant)

이를 통해 라이브러리 사용자는 자신의 클래스에 Clock 인스턴스를 주입하고, 테스트 중에 실제 구현을 가짜 구현으로 대체할 수 있습니다.

다음 단계

아직 다음 페이지들을 살펴보지 않았다면 고려해 보세요.