728x90
반응형
Kotlin에서 JUnit을 사용할 때 isEqualTo와 isSameAs 메서드의 차이점은 Java에서와 동일합니다.
isEqualTo 메서드는 두 개의 객체가 내용(content) 면에서 동일한지 확인하는 데 사용됩니다. 객체의 값(value)을 비교하기 위해 equals 메서드를 사용합니다. 예를 들어, obj1과 obj2라는 두 개의 객체가 있다면, assertThat(obj1).isEqualTo(obj2)를 사용하여 obj1이 obj2와 동일하다고 단언할 수 있습니다.
isSameAs 메서드는 반면에 두 개의 객체가 메모리 상에서 정확히 동일한 인스턴스를 참조하는지 확인합니다. 객체의 참조(reference)를 비교합니다. 예를 들어, obj1과 obj2라는 두 개의 객체가 있다면, assertThat(obj1).isSameAs(obj2)를 사용하여 obj1과 obj2가 동일한 객체 인스턴스를 참조하는지 단언할 수 있습니다.
다음은 차이점을 설명하는 간단한 예제입니다.
val str1 = "Hello"
val str2 = String("Hello")
val str3 = str1
assertThat(str1).isEqualTo(str2) // str1과 str2의 내용이 동일하므로 통과합니다.
assertThat(str1).isSameAs(str2) // str1과 str2는 서로 다른 인스턴스이므로 실패합니다.
assertThat(str1).isSameAs(str3) // str1과 str3은 동일한 인스턴스를 참조하므로 통과합니다.
assertThat(str1).isEqualTo(str3) // str1과 str3의 내용이 동일하므로 통과합니다.
728x90
반응형
'개발 > 코틀린' 카테고리의 다른 글
Kotlin object와 Gson의 오해 (0) | 2023.08.03 |
---|---|
(Coroutine) asStateFlow()를 써야할까요? (0) | 2023.07.28 |
(Coroutine) Flow flatMapConcat, flatMapLatest, flatMapMerge (0) | 2023.06.14 |
(코틀린) Testing with Kotest (0) | 2022.12.18 |
(코틀린) 동시성 (0) | 2022.12.11 |