assertEquals가 Kotlin의 Set에서 예상대로 작동하지 않습니다.

프란시스코 앨버트

목록이나 개체 집합을 비교하는 깨끗한 방법이 있는지 궁금합니다. 나는 두 가지 실험을했지만 둘 다 실패했습니다.

    @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))
    )
}

(내 생각 messageassertEquals?)

또는 equals()이것이 작동하지 않는 경우 수동으로 메서드를 추가합니다 (하지만을 추가 할 때 해당를 추가 equals()해야합니다 hashCode()).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android SharedPreferences의 Set.add ()가 예상대로 작동하지 않습니다.

분류에서Dev

Formik의 resetForm 메서드가 예상대로 작동하지 않습니다.

분류에서Dev

Firebase의 limitToLast () 메서드가 예상대로 작동하지 않습니다.

분류에서Dev

서브 쉘의 소스가 예상대로 작동하지 않습니다.

분류에서Dev

unittest의 assertRaises가 예상대로 작동하지 않습니다.

분류에서Dev

Python의 Foreach가 예상대로 작동하지 않습니다.

분류에서Dev

Python의 MRO가 예상대로 작동하지 않습니다.

분류에서Dev

<span> 커서가 예상대로 작동하지 않습니다.

분류에서Dev

autoresizingMask가 UITableView.tableHeaderView의 하위보기에 대해 예상대로 작동하지 않습니다.

분류에서Dev

CASE가 select 절의 MAX 함수에서 예상대로 작동하지 않습니다.

분류에서Dev

Citrix에서 실행할 때 mailItem의 SetProperty / GetProperty가 예상대로 작동하지 않습니다.

분류에서Dev

과학 표기법의 데이터에서 "sort -g"가 예상대로 작동하지 않습니다.

분류에서Dev

tr의 ngFor가 angular2에서 예상대로 작동하지 않습니다.

분류에서Dev

Collectors.groupingBy에 대한 사용자 정의 수집기가 예상대로 작동하지 않습니다

분류에서Dev

Webview가 KITKAT 이상에서 예상대로 작동하지 않습니다.

분류에서Dev

서로 내부의 lapply 함수가 예상대로 작동하지 않습니다.

분류에서Dev

for 루프에 의해 설정된 모든 setTimeout 지우기가 예상대로 작동하지 않습니다.

분류에서Dev

각도 메서드의 $ http.get 메서드가 예상대로 작동하지 않습니다.

분류에서Dev

여기 문서 내부의 bash 스크립트가 예상대로 작동하지 않습니다.

분류에서Dev

.NET C #의 IdnMapping.GetAscii 메서드가 예상대로 작동하지 않습니다.

분류에서Dev

Spotify 컬렉션의 Shuffle 메서드가 예상대로 작동하지 않습니다.

분류에서Dev

Django 템플릿의 Count 메서드가 예상대로 작동하지 않습니다.

분류에서Dev

VB의 비동기가 예상대로 작동하지 않습니다.

분류에서Dev

envsubst가 bash for 루프에서 예상대로 작동하지 않습니다.

분류에서Dev

Regex가 Angular 템플릿에서 예상대로 작동하지 않습니다.

분류에서Dev

for 루프 문에서 Async / Await가 예상대로 작동하지 않습니다.

분류에서Dev

overflow : auto가 position : sticky에서 예상대로 작동하지 않습니다.

분류에서Dev

TaskCompletionSource에서 CancellationTokenSource가 예상대로 작동하지 않습니다.

분류에서Dev

AND 연산자가 C에서 예상대로 작동하지 않습니다.

Related 관련 기사

  1. 1

    Android SharedPreferences의 Set.add ()가 예상대로 작동하지 않습니다.

  2. 2

    Formik의 resetForm 메서드가 예상대로 작동하지 않습니다.

  3. 3

    Firebase의 limitToLast () 메서드가 예상대로 작동하지 않습니다.

  4. 4

    서브 쉘의 소스가 예상대로 작동하지 않습니다.

  5. 5

    unittest의 assertRaises가 예상대로 작동하지 않습니다.

  6. 6

    Python의 Foreach가 예상대로 작동하지 않습니다.

  7. 7

    Python의 MRO가 예상대로 작동하지 않습니다.

  8. 8

    <span> 커서가 예상대로 작동하지 않습니다.

  9. 9

    autoresizingMask가 UITableView.tableHeaderView의 하위보기에 대해 예상대로 작동하지 않습니다.

  10. 10

    CASE가 select 절의 MAX 함수에서 예상대로 작동하지 않습니다.

  11. 11

    Citrix에서 실행할 때 mailItem의 SetProperty / GetProperty가 예상대로 작동하지 않습니다.

  12. 12

    과학 표기법의 데이터에서 "sort -g"가 예상대로 작동하지 않습니다.

  13. 13

    tr의 ngFor가 angular2에서 예상대로 작동하지 않습니다.

  14. 14

    Collectors.groupingBy에 대한 사용자 정의 수집기가 예상대로 작동하지 않습니다

  15. 15

    Webview가 KITKAT 이상에서 예상대로 작동하지 않습니다.

  16. 16

    서로 내부의 lapply 함수가 예상대로 작동하지 않습니다.

  17. 17

    for 루프에 의해 설정된 모든 setTimeout 지우기가 예상대로 작동하지 않습니다.

  18. 18

    각도 메서드의 $ http.get 메서드가 예상대로 작동하지 않습니다.

  19. 19

    여기 문서 내부의 bash 스크립트가 예상대로 작동하지 않습니다.

  20. 20

    .NET C #의 IdnMapping.GetAscii 메서드가 예상대로 작동하지 않습니다.

  21. 21

    Spotify 컬렉션의 Shuffle 메서드가 예상대로 작동하지 않습니다.

  22. 22

    Django 템플릿의 Count 메서드가 예상대로 작동하지 않습니다.

  23. 23

    VB의 비동기가 예상대로 작동하지 않습니다.

  24. 24

    envsubst가 bash for 루프에서 예상대로 작동하지 않습니다.

  25. 25

    Regex가 Angular 템플릿에서 예상대로 작동하지 않습니다.

  26. 26

    for 루프 문에서 Async / Await가 예상대로 작동하지 않습니다.

  27. 27

    overflow : auto가 position : sticky에서 예상대로 작동하지 않습니다.

  28. 28

    TaskCompletionSource에서 CancellationTokenSource가 예상대로 작동하지 않습니다.

  29. 29

    AND 연산자가 C에서 예상대로 작동하지 않습니다.

뜨겁다태그

보관