코드 작성시 만들어서 사용하기는 하지만, 공통으로 있으면 좋을 만한~~~ 것들이 있다.
https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/src/kotlin/util/Preconditions.kt
Spring Assert를 간혹 사용하기는 했는데 코틀린도 포함되어 있으니 사용하는 것으로 한다.
Null Check 예제만 들어도 무난하지 싶다( 나머지야 보면 다 아는 것들.)
internal class PreconditionsTest : StringSpec() {
private val log = KotlinLogging.logger { }
init {
"NULL 을 넣어 IllegalStateException 예외를 내보자 " {
val nullTxt: String? = null
val e = shouldThrow<IllegalStateException> {
val result = checkNotNull(nullTxt){"Null 이에요"}
log.debug { result }
}
e.message shouldBe "Null 이에요"
e shouldBe beInstanceOf<IllegalStateException>()
}
"NULL이 아닌 경우 정상 값 반환 " {
val txt: String? = "TEST"
val result = checkNotNull(txt){"Null 이에요"}
result shouldBe "TEST"
}
}
}
참고로 Test에서 결과에 대한 Type확인은 beInstanceOf 를 사용하면 된다.
그외 코드야 뭐..
Preconditions.kt 코드에서 굳이 뭐가 다를까 하는 함수도 있지만 넘어가자...ㅎㅎ
@kotlin.internal.InlineOnly
public inline fun <T : Any> requireNotNull(value: T?): T {
contract {
returns() implies (value != null)
}
return requireNotNull(value) { "Required value was null." }
}
@kotlin.internal.InlineOnly
public inline fun <T : Any> checkNotNull(value: T?): T {
contract {
returns() implies (value != null)
}
return checkNotNull(value) { "Required value was null." }
}