목록이나 개체 집합을 비교하는 깨끗한 방법이 있는지 궁금합니다. 나는 두 가지 실험을했지만 둘 다 실패했습니다.
@Test
fun `mytest`(){
class Person(val name: String, val age: Int)
assertEquals(
setOf(Person("john", 33), Person("Peter", 88)),
setOf(Person("john", 33), Person("Peter", 88)),
"this test fails"
)
}
또한 containsAll로 시도했습니다.
@Test
fun `mytest`(){
class Person(val name: String, val age: Int)
val persons = setOf(Person("john", 33), Person("Peter", 88))
assertTrue(
persons.containsAll(setOf(Person("john", 33), Person("Peter", 88))),
"This test also fails"
)
}
A의 때문이 예상된다 class
없이 equals()
, 방법 assertEquals()
들은 동일한 인스턴스가 아닌 객체 평등 것을 비교한다. 이것은 class
자바에서와 같이 "일반적인"Kotlin 에서도 동일합니다 class
.
코 틀린에서는 간단한 해결 방법이 있습니다 : 간단하게 변경 그것을 data class
대신 단지 class
, 자동으로 생성하는 equals()
/ hashCode()
뿐만 아니라 toString()
일부 다른 유용한 것들 (참조 https://kotlinlang.org/docs/reference/data-classes.html를 )
@Test
fun `mytest`(){
data class Person(val name: String, val age: Int)
assertEquals(
"data classes are cool",
setOf(Person("john", 33), Person("Peter", 88)),
setOf(Person("john", 33), Person("Peter", 88))
)
}
(내 생각 message
에 assertEquals?
)
또는 equals()
이것이 작동하지 않는 경우 수동으로 메서드를 추가합니다 (하지만을 추가 할 때 해당를 추가 equals()
해야합니다 hashCode()
).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다