Kotest 테스트 검증 단언문(Assertions)
Kotest는 독립적으로 사용할 수 있는 여러 하위 프로젝트로 나눠진다. 이러한 하위 프로젝트 중 하나는 포괄적인 단언문(assertion)/매처(matchers) 지원한다. 이는 Kotest 테스트 프레임워크 또는 JUnit 또는 Spock과 같은 다른 테스트 프레임워크와 함께 사용할 수 있다.
단언문 모듈의 핵심 기능은 상태를 테스트하는 함수이다. Kotest는 이러한 유형의 상태 단언문 함수를 매처(Matchers)라고 부른다. 코어 매처와 서드파티 라이브러리용 매처가 있다.
예외 테스트, 비결정적 코드를 테스트하는 데 도움이 되는 함수, 컬렉션을 위한 인스펙터, 단언문을 그룹화하는 소프트 단언문 등 테스트 작성을 위한 다른 많은 유틸리티도 있다.
다양한 매처
예를 들어, 변수에 예상값이 있다고 확인하려면 shouldBe
함수를 사용할 수 있다.
name shouldBe "devkuma"
문자열의 길이를 테스트하는 str.shouldHaveLength(10)
, 특정 파일이 디렉터리를 가리키는지 테스트하는 file.shouldBeDirectory()
와 같은 다양한 특정 시나리오를 위한 매처뿐만 아니라 shouldBe
와 같은 범용 매처도 있다. 이 함수는 infix 변형과 일반 변형이 모두 제공된다.
예를 들어, 단언문은 일반적으로 연쇄적으로 연결될 수 있다:
"substring".shouldContain("str")
.shouldBeLowerCase()
myImageFile.shouldHaveExtension(".jpg")
.shouldStartWith("https")
여러 모듈에 걸쳐 350개 이상의 매처가 있다. 여기에서 모든 매처에 대해 확인 바란다.
단서(Clues)
때로는 실패한 단언문에 무엇이 잘못되었는지 정확히 알 수 있는 충분한 정보가 포함되어 있지 않을 수 있다.
예를 들어, 다음과 같이 검증을 한다고 하자.
user.name shouldNotBe null
이 검증이 실패하면 단순히 다음과 같이 출력 될 것이다.
<null> should not equal <null>
이는 특별히 도움이 되지 않는다. 단서를 사용하여 실패 메시지에 추가 컨텍스트를 추가할 수 있다.
인스펙터(Inspectors)
인스펙터를 사용하면 컬렉션의 요소를 테스트하고 통과할 것으로 예상되는 요소의 수량(all, none, exactly k 등)을 지정할 수 있다.
예를 들어, 아래와 같이 mylist
를 3개를 확인할 수 있다.
mylist.forExactly(3) {
it.city shouldBe "Chicago"
}
여기에서 인스펙터에 대해 확인바란다.
사용자 지정 매처
Matcher<T>
인터페이스를 확장하여 자신만의 매처를 쉽게 추가할 수 있다. 여기서 T
는 일치시키려는 유형이다. 커스텀 매처는 기존 매처를 구성하거나 완전히 독립적으로 사용할 수 있다.
전체 작업 예제를 참조하라.