[kotlin] Hamcrest의 커스텀 매처 작성
Hamcrest는 다양한 종류의 매처를 제공하여 객체의 속성을 테스트하는 데 도움을 줍니다. 그러나 때때로 기본 제공 매처로는 특정한 테스트를 수행하기에는 부족할 수 있습니다. 이럴 때, Hamcrest의 커스텀 매처를 작성하면 원하는 테스트를 수행하는 데 도움이 됩니다.
Hamcrest 커스텀 매처란?
Hamcrest의 커스텀 매처를 작성하면, 특정 객체의 속성을 테스트하는 데 사용할 수 있는 새로운 매처를 만들 수 있습니다. 이를 통해 이미 제공되는 매처로는 수행하기 어려운 테스트를 더 쉽게 작성할 수 있게 됩니다.
커스텀 매처 작성하기
다음은 Hamcrest에서 커스텀 매처를 작성하는 간단한 예제입니다.
import org.hamcrest.Description
import org.hamcrest.TypeSafeMatcher
class IsDivisibleBy(private val divisor: Int) : TypeSafeMatcher<Int>() {
override fun matchesSafely(item: Int): Boolean {
return item % divisor == 0
}
override fun describeTo(description: Description) {
description.appendText("divisible by $divisor")
}
}
fun divisibleBy(divisor: Int) = IsDivisibleBy(divisor)
이 예제에서 IsDivisibleBy
매처는 숫자가 지정된 숫자로 나누어떨어지는지 테스트합니다. 또한 divisibleBy
함수를 통해 이 매처를 사용할 수 있도록 만듭니다.
커스텀 매처 사용하기
커스텀 매처를 사용하는 예제를 살펴보겠습니다.
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers
import org.junit.jupiter.api.Test
class CustomMatcherExampleTest {
@Test
fun testIsDivisibleBy() {
val number = 10
assertThat(number, divisibleBy(5))
}
}
위 예제에서 divisibleBy(5)
매처를 사용하여 number
가 5로 나누어떨어지는지 테스트합니다.
결론
Hamcrest의 커스텀 매처를 작성하고 사용함으로써, 더욱 읽기 쉬운, 유지보수가 쉬운 테스트 코드를 작성할 수 있습니다. 커스텀 매처를 통해 특정한 테스트 시나리오에 맞게 맞춤형 매처를 만들어 사용할 수 있습니다.
더 많은 정보는 Hamcrest 공식 문서에서 찾아볼 수 있습니다.