Kotest 코어 매처(Core Matchers)

Kotest 코어 매처 종류에 대해 소개한다.

kotest-assertions-core 모듈에서 제공하는 매처이다.

General
obj.shouldBe(other) 주어진 obj와 other가 모두 동일한지 확인한다.
expr.shouldBeTrue() 표현식이 참인지 확인한다. expr.shouldBe(true)와 동일하다
expr.shouldBeFalse() 표현식이 거짓인지 확인한다. expr.shouldBe(false)와 동일하다
shouldThrow<T> { block } 블록이 T Throwable 또는 T의 하위 유형을 던지는지 확인한다.
shouldThrowExactly<T> { block } 블록이 정확히 T를 던지는지 확인한다.
shouldThrowAny { block } 블록이 모든 유형의 Throwable을 던지는지 확인한다.
shouldThrowMessage(message) { block } 코드 블록이 주어진 메시지와 함께 Throwable을 발생시키는지 확인한다.
Types
obj.shouldBeSameInstanceAs(other) 객체를 ID별로 비교한다. 즉, 동일한 참조이다.
obj.shouldBeTypeOf<T>() 주어진 참조가 정확히 T 유형인지 확인한다. 하위 클래스는 실패한다. 즉, 1 should beOfType<Number>는 실패한다. 1은 숫자이지만 런타임 유형은 숫자가 아니기 때문이다.
obj.shouldBeInstanceOf<T>() 주어진 참조가 T 유형이거나 T의 하위 클래스인지 확인한다.
obj.shouldHaveAnnotation(annotationClass) 객체에 주어진 유형의 주석이 있는지 확인한다.
obj.shouldBeNull() 주어진 참조가 null인지 확인한다.
Comparables
comp.shouldBeLessThan(other) compareTo를 사용하여 compother보다 작은지 확인한다.
comp.shouldBeLessThanOrEqualTo(other) compareTo를 사용하여 compother보다 작거나 같은지 확인한다.
comp.shouldBeEqualComparingTo(other) compareTo를 사용하여 compother와 같은지 확인한다.
comp.shouldBeEqualComparingTo(other, comparator) compother와 같은지 확인하기 위해 comparator.compare를 사용한다.
comp.shouldBeGreaterThan(other) compareTo를 사용하여 compother보다 큰지 확인한다.
comp.shouldBeGreaterThanOrEqualTo(other) compareTo를 사용하여 compother보다 크거나 같은지 확인한다.
Iterator
iterator.shouldBeEmpty() 반복자에 다음 값이 없는지 확인한다.
iterator.shouldHaveNext() 반복자가 다음 값을 가지고 있는지 확인한다.
Maps
map.shouldContain("key", "value") 맵에 “key"와 “value” 간의 매핑이 포함되어 있음을 확인한다.
map.shouldContainAll(other) 맵이 지정된 맵의 모든 쌍을 포함하고 있는지 확인한다.
map.shouldContainExactly(other) 맴이 주어진 맵의 쌍을 정확하게 포함하고 추가 항목이 없음을 확인한다.
map.shouldContainKey(key) 맵에 임의의 값을 갖는 ‘key’라는 키가 포함되어 있는지 확인한다.
map.shouldContainKeys(keys) 맵에 지정된 모든 키에 대한 매핑이 포함되어 있는지 확인한다.
map.shouldContainValue(value) 값이 ‘value’인 매핑이 맵에 하나 이상 포함되어 있는지 확인한다.
map.shouldContainValues(values) 맵에 주어진 값이 모두 포함되어 있는지 확인한다.
map.shouldBeEmpty() 이 맵이 비어 있음을 확인한다.
map.shouldMatchAll("k1" to {it shouldBe "v1"}, "k2" to {it shouldBe "v2"}, ...) 맵의 모든 항목이 제공된 매처와 일치할 수 있다고 단언문하고 맵의 추가 키는 무시된다.
map.shouldMatchExactly("k1" to {it shouldBe "v1"}, "k2" to {it shouldBe "v2"}, ...) 맵의 항목이 제공된 매처와 정확하게 일치할 수 있는지 확인한다.
Strings
str.shouldBeBlank() 문자열에 공백만 포함되어 있는지 또는 비어 있는지 확인한다.
str.shouldBeEmpty() 문자열의 길이가 0인지 확인한다.
str.shouldBeLowerCase() 문자열이 모두 소문자인지 확인한다.
str.shouldBeUpperCase() 문자열이 모두 대문자인지 확인한다.
str.shouldContain("substr") 문자열에 주어진 하위 문자열이 포함되어 있는지 확인한다. 하위 문자열은 문자열과 같을 수 있다. 이 매처는 대소문자를 구분한다. 이 대소문자를 구분하지 않게 하려면 shouldContainIgnoringCase()를 사용한다.
str.shouldContain(regex) 문자열에 주어진 정규식이 포함되어 있는지 확인한다.
str.shouldContainADigit() 문자열에 최소한 하나의 숫자가 포함되어 있는지 확인한다.
str.shouldContainIgnoringCase(substring) 문자열에 대소문자를 무시하는 하위 문자열이 포함되어 있는지 확인한다.
str.shouldContainOnlyDigits() 문자열에 숫자만 포함되어 있거나 비어 있는지 확인한다.
str.shouldBeInteger([radix]) 문자열에 int가 포함되어 있는지 확인하고 이를 반환한다.
str.shouldContainOnlyOnce(substring) 문자열에 하위 문자열이 정확히 한 번만 포함되어 있는지 확인한다.
str.shouldEndWith(suffix) 문자열이 주어진 접미사로 끝나는지 확인한다. 접미사는 문자열과 같을 수 있다. 이 매처는 대소문자를 구분한다. 대소문자를 구분하지 않게 하려면 매처 앞의 값에 toLowerCase()를 호출한다.
str.shouldHaveLength(length) 문자열이 주어진 길이를 가지고 있는지 확인한다.
str.shouldHaveLineCount(count) 문자열에 주어진 수의 줄이 포함되어 있는지 확인한다. str.split("\n").length.shouldBe(n)
str.shouldHaveMaxLength(max) 문자열이 주어진 최대 길이보다 길지 않은지 확인한다.
str.shouldHaveMinLength(min) 문자열이 주어진 최소 길이보다 짧지 않은지 확인한다.
str.shouldHaveSameLengthAs(anotherString) 문자열이 다른 문자열과 길이가 같은지 확인한다.
str.shouldMatch(regex) 문자열이 주어진 정규식과 완전히 일치하는지 확인한다.
str.shouldStartWith("prefix") 문자열이 주어진 접두사로 시작하는지 확인한다. 접두사는 문자열과 같을 수 있다. 이 매처는 대소문자를 구분한다. 대소문자를 구분하지 않게 하려면 매처 앞의 값에 toLowerCase()를 호출한다.
str.shouldBeEqualIgnoringCase(other) 문자열이 대소문자를 무시하고 다른 문자열과 동일하다고 확인한다.
str.shouldBeTruthy() 문자열이 진실임을 확인한다. Truthy는 다음 중 하나이다: [“true”, “yes”, “y”, “1”]
str.shouldBeFalsy() 문자열이 거짓임을 확인한다. Falsy는 다음 중 하나이다: [“false”, “no”, “n”, “0”]
Integers
int.shouldBeBetween(x, y) int가 x와 y 사이에 있고 x와 y를 모두 포함한다고 가정한다.
int.shouldBeLessThan(n) int가 주어진 값 n보다 작은지 확인한다.
int.shouldBeLessThanOrEqual(n) int가 주어진 값 n보다 작거나 같은지 확인한다.
int.shouldBeGreaterThan(n) int가 주어진 값 n보다 큰지 확인한다.
int.shouldBeGreaterThanOrEqual(n) int가 주어진 값 n보다 크거나 같은지 확인한다.
int.shouldBeEven() int가 짝수인지 확인한다.
int.shouldBeOdd() int가 홀수인지 확인한다.
int.shouldBeInRange(range) 주어진 범위에 int가 포함되어 있는지 확인한다.
int.shouldBeZero() int가 0인지 확인한다.
Longs
long.shouldBetween(x, y) long이 x와 y 사이에 있고 x와 y를 모두 포함한하였는지 확인한다.
long.shouldBeLessThan(n) long이 주어진 값 n보다 작은지 확인한다.
long.shouldBeLessThanOrEqual(n) long이 주어진 값 n보다 작거나 같은지 확인한다.
long.shouldBeGreaterThan(n) long이 주어진 값 n보다 큰지 확인한다.
long.shouldBeGreaterThanOrEqual(n) long이 주어진 값 n보다 크거나 같은지 확인한다.
long.shouldBeInRange(range) 주어진 범위에 long이 포함되어 있는지 확인한다.
long.shouldBeEven() 길이가 짝수인지 확인한다.
long.shouldBeOdd() 긴 값이 홀수인지 확인한다.
long.shouldBeZero() 길이가 0인지 확인한다.
Doubles or Floats
double.shouldBe(value plusOrMinus(tolerance)) double이 허용오차 범위 내에서 주어진 값과 같은지 확인한다. 이는 이중 동등성을 테스트하는 데 권장되는 방법이다.
double.shouldBeBetween(x, y) x와 y를 모두 포함하여 double이 x와 y 사이에 있다고 가정한다.
double.shouldBeLessThan(n) double이 주어진 값 n보다 작은지 확인한다.
double.shouldBeLessThanOrEqual(n) double이 주어진 값 n보다 작거나 같은지 확인하다.
double.shouldBeGreaterThan(n) double이 주어진 값 n보다 큰지 확인한다.
double.shouldBeGreaterThanOrEqual(n) double이 주어진 값 n보다 크거나 같은지 확인한다.
double.shouldBePositive() double이 양수인지 확인한다.
double.shouldBeNegative() double이 음수인지 확인한다.
double.shouldBePositiveInfinity() double이 양의 무한대임을 확인한다.
double.shouldBeNegativeInfinity() double이 음의 무한대임을 확인한다.
double.shouldBeNaN() double이 숫자가 아닌 상수 NaN인지 확인한다.
double.shouldBeZero() double이 0인지 확인한다.
BigDecimal
bigDecimal.shouldHavePrecision(n) bigDecimal 정밀도가 주어진 값 n과 같은지 확인한다.
bigDecimal.shouldHaveScale(n) bigDecimal 소수 자릿수가 주어진 값 n과 같은지 확인한다.
bigDecimal.shouldBePositive() bigDecimal이 양수임을 확인한다.
bigDecimal.shouldBeNegative() bigDecimal이 음수임을 확인한다.
bigDecimal.shouldBeZero() bigDecimal이 0이지 확인한다.
bigDecimal.shouldBeLessThan(n) bigDecimal이 주어진 값 n보다 작은지 확인한다.
bigDecimal.shouldBeLessThanOrEquals(n) bigDecimal이 주어진 값 n보다 작거나 같은지 확인한다.
bigDecimal.shouldBeGreaterThan(n) bigDecimal이 주어진 값 n보다 큰지 확인한다.
bigDecimal.shouldBeGreaterThanOrEquals(n) bigDecimal이 주어진 값 n보다 크거나 같은지 확인한다.
bigDecimal.shouldBeInRange(r) bigDecimal이 주어진 범위에 있는지 확인한다.
Channels
channel.shouldReceiveWithin(duration) 채널이 기간 내에 수신해야 한하였는지 확인한다.
channel.shouldReceiveNoElementsWithin(duration) 채널이 기간 내에 어떤 요소도 수신해서는 안 되었는지 확인한다.
channel.shouldHaveSize(n) 채널이 닫히기 전에 정확히 n개의 요소를 받아야 한하였는지 확인한다.
channel.shouldReceiveAtLeast(n) 채널이 >= n개의 요소를 수신해야 한하였는지 확인한다.
channel.shouldReceiveAtMost(n) 채널이 닫히기 전에 <= n개의 요소를 수신해야 한하였는지 확인한다.
channel.shouldBeClosed() 채널이 닫혀 있는지 확인한다.
channel.shouldBeOpen() 채널이 열려 있음을 확인한다.
channel.shouldBeEmpty() 채널이 비어 있는지 확인한다.
URIs
uri.shouldHaveAuthority(fragment) URI에 지정된 권한이 있는지 확인한다.
uri.shouldHaveFragment(fragment) URI에 지정된 조각이 있는지 확인한다.
uri.shouldHaveHost(scheme) URI가 주어진 호스트 이름을 가지고 있는지 확인한다.
uri.shouldHaveParameter(scheme) URI의 쿼리 문자열에 지정된 매개변수가 포함되어 있는지 확인한다.
uri.shouldHavePath(scheme) URI에 지정된 경로가 있는지 확인한다.
uri.shouldHavePort(scheme) URI에 지정된 포트가 있는지 확인한다.
uri.shouldHaveQuery(fragment) URI에 주어진 쿼리가 있는지 확인한다.
uri.shouldHaveScheme(scheme) URI에 지정된 구성표가 있는지 확인한다.
Files
file.shouldBeAbsolute() 파일이 절대 경로를 나타내는지 확인한다.
file.shouldBeADirectory() 파일이 디렉터리를 나타내는지 확인한다.
file.shouldBeAFile() 파일이 파일을 나타내는지 확인한다.
file.shouldBeCanonical() 파일이 정식 형식인지 확인한다.
file.shouldBeEmpty() 파일이 존재하지만 비어 있는지 확인한다.
file.shouldBeExecutable() 현재 프로세스에서 파일을 실행할 수 있는지 확인한다.
file.shouldBeHidden() 파일이 디스크에 존재하고 숨겨진 파일인지 확인한다.
file.shouldBeReadable() 현재 프로세스에서 파일을 읽을 수 있는지 확인한다.
file.shouldBeRelative() 파일이 상대 경로를 나타내는지 확인한다.
file.shouldBeSmaller(file) 이 파일이 주어진 파일보다 작은지 확인한다.
file.shouldBeLarger(file) 이 파일이 주어진 파일보다 큰지 확인한다.
file.shouldBeWriteable() 현재 프로세스에서 파일을 쓸 수 있는지 확인한다.
dir.shouldBeNonEmptyDirectory() 파일이 디렉터리이고 비어 있지 않은지 확인한다.
dir.shouldContainFile(name) 파일이 디렉터리이고 해당 파일에 지정된 이름의 파일이 포함되어 있는지 확인한다.
dir.shouldContainNFiles(name) 파일이 디렉터리이고 정확히 n개의 파일이 포함되어 있는지 확인한다.
file.shouldExist() 파일이 디스크에 디렉터리 또는 파일로 존재하는지 확인한다.
file.shouldHaveExtension(ext) 파일이 주어진 확장자로 끝나는지 확인한다.
file.shouldHaveFileSize(size) 파일이 주어진 파일 크기를 가지고 있는지 확인한다.
file.shouldHaveName(name) 파일 이름이 주어진 이름과 일치하는지 확인한다.
file.shouldHavePath(path) 파일의 경로가 주어진 경로와 일치하는지 확인한다.
file.shouldStartWithPath(prefix) 파일의 경로가 주어진 접두사로 시작하는지 확인한다.
dir.shouldContainFileDeep(name) 파일이 디렉터리이고 해당 파일이나 하위 디렉터리에 주어진 이름의 파일이 포함되어 있는지 확인한다.
dir.shouldContainFiles(name1, name2, ..., nameN) 파일이 디렉터리이고 해당 파일에 해당 이름을 가진 모든 파일이 포함되어 있는지 확인한다.
file.shouldBeSymbolicLink() 파일이 심볼릭 링크인지 확인한다.
file.shouldHaveParent(name) 파일에 주어진 이름을 가진 상위 파일이 있는지 확인한다.
Dates
date.shouldHaveSameYearAs(otherDate) 날짜가 주어진 날짜와 동일한 연도를 가지고 있는지 확인한다.
date.shouldHaveSameMonthAs(otherDate) 날짜가 주어진 날짜와 같은 달인지 확인한다.
date.shouldHaveSameDayAs(otherDate) 날짜가 주어진 날짜와 같은 달의 날짜인지 확인한다.
date.shouldBeBefore(otherDate) 날짜가 주어진 날짜 이전인지 확인한다.
date.shouldBeAfter(otherDate) 날짜가 주어진 날짜 이후인지 확인한다.
date.shouldBeWithin(기간, otherDate) 날짜가 주어진 날짜의 기간 내에 있는지 확인한다.
date.shouldBeWithin(duration, otherDate) 날짜가 주어진 날짜의 기간 내에 있는지 확인한다.
date.shouldBetween(firstDate, secondDate) 날짜가 firstdate와 seconddate 사이에 있는지 확인한다.
date.shouldHaveYear(year) 날짜의 연도가 올바른지 확인한다.
date.shouldHaveMonth(month) 날짜의 월이 올바른지 확인한다.
date.shouldHaveDayOfYear(day) 날짜에 정확한 날짜가 있는지 확인한다.
date.shouldHaveDayOfMonth(day) 날짜의 날짜가 올바른지 확인한다.
date.shouldHaveDayOfWeek(day) 날짜의 요일이 올바른지 확인한다.
date.shouldHaveHour(hour) 날짜의 시간이 올바른지 확인한다.
date.shouldHaveMinute(minute) 날짜의 분이 정확한지 확인한다.
date.shouldHaveSecond(second) 날짜의 초가 올바른지 확인한다.
date.shouldHaveNano(nao) 날짜의 나노초가 올바른지 확인한다.
ZonedDateTime
zonedDateTime.shouldBeToday() ZonedDateTime이 오늘과 같은 날인지 확인한다.
zonedDateTime.shouldHaveSameInstantAs(other: ZonedDateTime) ``ChronoZonedDateTime.isEqual```을 사용하여 ZonedDateTime이 다른 ZonedDateTime과 동일한지 확인한다.
OffsetDateTime
offsetDateTime.shouldBeToday() OffsetDateTime이 오늘과 같은 날인지 확인한다.
offsetDateTime.shouldHaveSameInstantAs(other: OffsetDateTime) ``OffsetDateTime.isEqual```을 사용하여 OffsetDateTime이 다른 OffsetDateTime과 동일한지 확인한다.
Times
time.shouldHaveSameHoursAs(otherTime) 시간이 주어진 시간과 동일한 시간인지 확인한다.
time.shouldHaveSameMinutesAs(otherTime) 시간이 주어진 시간과 동일한 분을 가지고 있는지 확인한다.
time.shouldHaveSameSecondsAs(otherTime) 시간이 주어진 시간과 동일한 초를 가지고 있는지 확인한다.
time.shouldHaveSameNanosAs(otherTime) 시간이 주어진 시간과 동일한 나노를 갖는지 확인한다.
time.shouldBeBefore(otherTime) 시간이 주어진 시간 이전인지 확인한다.
time.shouldBeAfter(otherTime) 시간이 주어진 시간 이후인지 확인한다.
time.shouldBeBetween(firstTime, secondTime) 시간이 firstTime과 secondTime 사이에 있는지 확인한다.
Instant
instant.shouldBeAfter(anotherInstant) 해당 인스턴스가 anotherInstant 이후에 발생한다고 확인한다.
instant.shouldBeBefore(anotherInstant) 해당 인스턴스가 anotherInstant 이전에 있는지 확인한다.
instant.shouldBeBetween(fromInstant, toInstant) 인스턴트가 fromInstant와 toInstant
instant.shouldBeCloseTo(anotherInstant, duration) 해당 순간이 기간별로 범위 내 anotherInstant에 가까운지 확인한다.
Timestamp
timestamp.shouldBeAfter(anotherTimestamp) 타임스탬프가 anotherTimestamp 이후인지 확인한다.
timestamp.shouldBeBefore(anotherTimestamp) 타임스탬프가 anotherTimestamp
timestamp.shouldBetween(fromTimestamp, toTimestamp) 타임스탬프가 fromTimestamp와 toTimestamp
Concurrent
shouldCompleteWithin(timeout, unit, function) 주어진 함수가 주어진 기간 내에 완료되는지 확인한다.
shouldTimeout(timeout, unit, function) 주어진 기능이 주어진 기간 내에 완료되지 않았는지 확인한다.
shouldTimeout(duration, suspensableFunction) 주어진 정지 가능 기능이 주어진 기간 내에 완료되지 않았는지 확인한다.
Futures
future.shouldBeCancelled() future가 취소되었는지 확인한다.
future.shouldBeCompleted() future가 완성되었는지 확인한다.
future.shouldBeCompletedExceptionally() 예외를 제외하고 future가 완료되었는지 확인한다.
future.shouldCompleteExceptionallyWith(throwable) 주어진 예외를 통해 future가 완료되었는 확인한다.
Threads
thread.shouldBeBlocked() 스레드가 현재 차단되어 있는지 확인한다.
thread.shouldBeDaemon() 스레드가 데몬 스레드인지 확인한다.
thread.shouldBeAlive() 스레드가 살아 있음을 확인한다.
thread.shouldBeTerminating() 스레드가 종료되었음을 확인한다.
Throwables / Exceptions
throwable.shouldHaveMessage(message) 던질 수 있는 메시지가 주어진 메시지와 동일한지 확인한다.
throwable.shouldHaveCause() 던질 수 있는 물체에 원인이 있는지 확인한다.
throwable.shouldHaveCause { block } Throwable에 원인이 있다고 확인하고 이를 블록에 매개변수로 전달한다.
throwable.shouldHaveCauseInstanceOf<T>() 던질 수 있는 물체에 원인이 있고 T 유형이거나 T의 하위 클래스인지 확인한다.
throwable.shouldHaveCauseOfType<T>() 던질 수 있는 물체에 원인이 있고 정확히 T 유형인지 확인한다.
Result
result.shouldBeSuccess() 결과가 성공인지 확인한다.
result.shouldBeSuccess(value) 결과가 성공이고 값이 주어진 것과 동일한지 확인한다.
result.shouldBeSuccess(block) 결과가 성공이라고 가정한 후 결과 값으로 블록을 실행한다.
result.shouldBeFailure() 결과가 실패인 확인한다.
result.shouldBeFailureOfType<Type : Throwable>() 결과가 실패이고 예외 클래스가 주어진 것과 동일한지 확인한다.
result.shouldBeFailure(block) 결과가 실패라고 가정한 후 예외가 발생한 블록을 실행한다.
Optional
선택적.shouldBePresent() 이 Optional이 존재하는지 확인한다.
선택적.shouldBePresent { value -> .. } 이 Optional이 존재하는지 확인하고
선택적.shouldBeEmpty() 이 선택사항이 비어 있음을 확인한다.
Reflection
kclass.shouldHaveAnnotations() 클래스에 주석이 있는지 확인한다.
kclass.shouldHaveAnnotations(n) 클래스에 정확히 N개의 주석이 있는지 확인한다.
kclass.shouldBeAnnotatedWith<T>() 클래스가 주어진 유형으로 주석을 달았는지 확인한다.
kclass.shouldBeAnnotatedWith<T> { block } 클래스가 주어진 유형으로 주석을 달았는지 확인한 다음 주석이 있는 블록을 실행한다.
kclass.shouldHaveFunction(name) 클래스에 주어진 이름의 함수가 있는지 확인한다.
kclass.shouldHaveFunction(name) { block } 클래스에 주어진 이름의 함수가 있다고 확인한 다음
kclass.shouldHaveMemberProperty(name) 클래스에 주어진 이름의 멤버 속성이 있는지 확인한다.
kclass.shouldHaveMemberProperty(name) { block } 클래스에 주어진 이름의 멤버 속성이 있다고 확인한 다음
kclass.shouldBeSubtypeOf<T>() 클래스가 T
kclass.shouldBeSupertypeOf<T>() 클래스가 T
kclass.shouldBeData() 클래스가 데이터 클래스인지 확인한다.
kclass.shouldBeSealed() 클래스가 봉인된 클래스인지 확인한다.
kclass.shouldBeCompanion() 클래스가 동반 객체임을 확인한다.
kclass.shouldHavePrimaryConstructor() 클래스에 기본 생성자가 있는지 확인한다.
kclass.shouldHaveVisibility(visibility) 클래스가 주어진 가시성을 갖고 있는지 확인한다.
kfunction.shouldHaveAnnotations() 함수에 주석이 있는지 확인한다.
kfunction.shouldHaveAnnotations(n) 함수에 정확히 N개의 주석이 있는지 확인한다.
kfunction.shouldBeAnnotatedWith<T>() 함수가 주어진 유형으로 주석을 달았는지 확인한다.
kfunction.shouldBeAnnotatedWith<T> { block } 함수가 주어진 유형으로 주석을 달았는지 확인한 다음 주석이 있는 블록을 실행한다
kfunction.shouldHaveReturnType<T>() 함수가 주어진 유형을 반환한하였는지 확인한다.
kfunction.shouldBeInline() 함수가 인라인임을 확인한다.
kfunction.shouldBeInfix() 함수가 중위
kproperty.shouldBeOfType<T>() 속성이 주어진 유형인지 확인한다.
kproperty.shouldBeConst() 속성이 const
kproperty.shouldBeLateInit() 속성이 late init var
kcallable.shouldHaveVisibility(visibility) 맴버가 지정된 가시성을 갖고 있는지 확인한다.
kcallable.shouldBeFinal() 맴버가 최종임을 확인한다.
kcallable.shouldBeOpen() 맴버가 열려 있음을 확인한다.
kcallable.shouldBeAbstract() 맴버가 Abstract인지 확인한다.
kcallable.shouldBeSuspendable() 맴버가 Suspendable인지 확인한다.
kcallable.shouldAcceptParameters(parameters) 매개변수를 사용하여 멤버를 호출할 수 있는지 확인한다(유형 확인)
kcallable.shouldAcceptParameters(parameters) { block } 매개변수를 사용하여 멤버를 호출할 수 있다고 확인한 다음(유형 확인) 주석이 있는 블록을 실행한다.
kcallable.shouldHaveParametersWithName(parameters) 멤버가 주어진 이름의 매개변수를 가지고 있는지 확인한다.
kcallable.shouldHaveParametersWithName(parameters) { block } 멤버가 주어진 이름의 매개변수를 가지고 있는지 확인한 다음, 주석이 있는 블록을 실행한다.
ktype.shouldBeOfType<T>() KType이 T
Statistic
collection.shouldHaveMean(mean) 컬렉션이 기본 정밀도 = 4인 특정 평균을 가지고 있는지 확인한다.
collection.shouldHaveMean(mean, precision) 컬렉션이 특정 정밀도로 특정 평균을 가지고 있는지 확인한다.
collection.shouldHaveVariance(mean) 컬렉션에 기본 정밀도 = 4
collection.shouldHaveVariance(mean, precision) 컬렉션에 특정 정밀도의 특정 분산이 있는지 확인한다.
collection.shouldHaveStandardDeviation(mean) 컬렉션에 기본 정밀도 = 4인 특정 표준 편차가 있는지 확인한다.
collection.shouldHaveStandardDeviation(mean, precision) 컬렉션에 특정 정밀도의 특정 표준 편차가 있는지 확인한다.
Regex
regex.shouldBeRegex(anotherRegex) 패턴과 regexOptions
regex.shouldHavePattern(regexPattern) 정규식이 regexPattern을 제공했는지 확인한다.
regex.shouldHaveExactRegexOptions(regexOptions) 정규식이 주어진 regexOptions
regex.shouldIncludeRegexOption(regexOption) 정규식에 주어진 regexOption이 포함되어 있는지 확인한다.
regex.shouldIncludeRegexOptions(regexOptions) 주어진 regexOptions가 정규식에 포함되어 있는지 확인한다.
Selective Matchers
any.shouldBeEqualToUsingFields(other: T, vararg 속성: KProperty<*>) 주어진 속성만을 고려하여 any가 other와 동일한지 확인한다. [예](https://github.com/kotest/kotest/blob/1f4069d78faead65a0d7e8c7f1b689b417a655d2/kotest-assertions/kotest-assertions-core/src/jvmMain/kotlin/io/kotest/matchers/equality/reflection.kt#L20 참조) )
any.shouldBeEqualToIgnoringFields(other: T, vararg 속성: KProperty<*>) 주어진 속성을 무시하고 any가 other와 동일한지 확인한다. [예제](https://github.com/kotest/kotest/blob/1f4069d78faead65a0d7e8c7f1b689b417a655d2/kotest-assertions/kotest-assertions-core/src/jvmMain/kotlin/io/kotest/matchers/equality/reflection.kt#L127 참조) )
Field by Field Comparison Matchers
any.shouldBeEqualToComparingFields(other: T) equals 방법 대신 해당 필드(비공개 필드 무시)를 고려하여 모든 항목이 다른 항목과 동일한지 확인한다.
any.shouldBeEqualToComparingFields(other: T,ignorePrivateFields: Boolean) equals 메서드 대신 해당 필드와 비공개 필드(ignorePrivateFields가 false인 경우)를 고려하여 모든 항목이 다른 항목과 동일한지 확인한다.
any.shouldBeEqualToComparingFieldsExcept(other: T,ignoreProperty: KProperty<*>, varargignoreProperties: KProperty<*>) ‘equals’ 메서드 대신 ‘ignoreProperty’ 및 ‘ignoreProperties’에서 언급한 비공개 필드와 기타 필드를 무시하고 공개 필드를 고려하여 모든 항목이 다른 항목과 동일한지 확인한다. 더 이상 사용되지 않는다. shouldBeEqualToComparingFields 및 shouldBeEqualToIgnoringFields는 대안이다.
any.shouldBeEqualToComparingFieldsExcept(other: T,ignorePrivateFields: Boolean,ignoreProperty: KProperty<*>, varargignoreProperties: KProperty<*>) private 필드(ignorePrivateFields가 false인 경우)를 포함한 모든 필드를 고려하지만 equals 메서드 대신 ignorePropertyignoreProperties에 의해 언급된 필드를 무시하는 것을 고려하여 any가 other와 동일한지 확인한다. 더 이상 사용되지 않는다. shouldBeEqualToComparingFieldsshouldBeEqualToIgnoringFields는 대안이다.
Resource Matchers
str shouldMatchResource "/path/to/test_resource.txt" 문자열이 주어진 리소스(문자열)와 동일한지 확인한다. 이 매처는 줄 구분 기호의 차이를 무시한다.
str shouldNotMatchResource "/path/to/test_resource.txt" 문자열이 주어진 리소스(문자열)와 같지 않은지 확인한다. 이 매처는 줄 구분 기호의 차이를 무시한다.
str.shouldMatchResource("/path/to/test_resource.txt", ::providedMatcher) providedMatcher를 사용하여 문자열이 주어진 리소스(문자열)와 일치하는지 확인한다. 줄 구분 기호의 차이는 기본적으로 무시된다.
str.shouldNotMatchResource("/path/to/test_resource.txt", ::providedMatcher) providedMatcher를 사용하여 문자열 not이 주어진 리소스(문자열)와 일치하는지 확인한다. 줄 구분 기호의 차이는 기본적으로 무시된다.
byteArray shouldMatchResource "/path/to/test_resource.bin" byteArray가 지정된 리소스와 동일한지 확인한다.
byteArray shouldNotMatchResource "/path/to/test_resource.bin" byteArray가 지정된 리소스와 같지 않은지 확인한다.
byteArray.shouldMatchResource("/path/to/test_resource.bin", ::providedMatcher) providedMatcher를 사용하여 byteArray가 지정된 리소스와 일치하는지 확인한다.
byteArray.shouldNotMatchResource("/path/to/test_resource.bin", ::providedMatcher) providedMatcher를 사용하여 byteArray가 지정된 리소스와 일치하지 않음을 확인한다.

참조




최종 수정 : 2024-04-23