[kotlin] Hamcrest의 확장 매처
우리는 테스트하는 동안 객체의 상태와 동작을 검증하기 위해 매처(matcher)를 사용합니다. Hamcrest는 테스트 코드를 작성할 때 매우 유용한 라이브러리 중 하나입니다. 하지만 때로는 Hamcrest의 기본 매처만으로는 충분하지 않을 수 있습니다. 그럴 때는 Hamcrest의 확장 매처를 활용할 수 있습니다.
확장 매처를 작성하는 방법은 매우 간단합니다. Kotlin을 사용하는 경우, 다음과 같이 확장 함수를 작성할 수 있습니다.
import org.hamcrest.Description
import org.hamcrest.TypeSafeMatcher
fun <T> isDivisibleBy(divisor: Int): TypeSafeMatcher<T> {
return object : TypeSafeMatcher<T>() {
override fun matchesSafely(item: T): Boolean {
// item을 divisor로 나눈 나머지가 0인지 확인
}
override fun describeTo(description: Description) {
description.appendText("나누어 떨어져야 함")
}
override fun describeMismatchSafely(item: T, mismatchDescription: Description) {
mismatchDescription.appendValue(item).appendText(" 나누기 ").appendValue(divisor)
}
}
}
위 코드에서 확장 함수 isDivisibleBy
는 TypeSafeMatcher
를 반환합니다. 이를 사용하면 우리는 isDivisibleBy
매처를 활용하여 객체가 특정 숫자로 나누어지는지 손쉽게 검증할 수 있습니다.
이제 확장 매처를 사용하여 테스트 코드를 작성할 수 있습니다.
import org.hamcrest.MatcherAssert.assertThat
val number = 10
assertThat(number, isDivisibleBy(5))
위의 코드를 실행하면 number
가 5로 나누어 떨어지는지 확인하는 테스트를 생성할 수 있습니다.
이처럼 확장 매처를 작성하고 활용함으로써 우리는 테스트 코드를 보다 읽기 쉽고 유지보수하기 쉽게 만들 수 있습니다. Hamcrest 라이브러리의 다양한 기능을 이용하여 더 많은 확장 매처를 작성하고 테스트 코드를 더욱 효과적으로 작성할 수 있습니다.
참고 자료
이제 Hamcrest 라이브러리의 확장 매처를 작성하여 테스트 코드를 보다 유연하게 작성해보세요!