2017-12-02 4 views
0

assertEquals()을 사용하는 두 객체를 비교할 때 내부 구조 즉. 객체의 속성?두 객체의 assertEquals()

나는 다음과 같은 클래스 A가 있다고 가정

public class A { 
    private int ID; 
    private String name; 
    private String address; 
} 

그리고 제공된 객체의 다른 순서에있는 속성 (즉 A의 객체에 비교하는), 다음 assertEquals()는 무엇을 할 것인가 생각을? 다른 방법으로 수행 할 수있는 강력한 방법이 있습니까?

+1

구체적으로 말하면 중요합니다. 어떤 구현에 대해 이야기하고 있습니까? 예 : 어떤 패키지 등? –

+0

좀 더 자세히 설명해 주시겠습니까? –

+0

하나 이상의 assertEquals가 있습니다. 어느 쪽을 찍고 있니? –

답변

2

@ JimGarrison이 맞습니다. assertEquals()은 객체에 equals() 메소드를 호출하여 동등 함을 판별합니다. 제대로 어떤 이유로 든 클래스에 equals() 방법을 구현할 수없는 경우

는 "? 그것을 다른 방법으로 할 수있는 강력한 방법이 있습니까 " 를 귀하의 질문에 대답하려면, 당신은을 평가할 필드의 값에 따라 객체의 동일성을 확인하려면 EqualsBuilder's reflectionEquals() method을 사용하는 것이 좋습니다. 상당히 견고하며 원하는 필드를 제외 할 수 있습니다.

은 다른 질문에 대답하기 위해, "는 assertEquals()가 무엇을 할 것 인 다음, 제공된 객체의 속성이 다른 순서에있는 가정?", 그것은 할 것 모두가 다른 인스턴스에서 equals() 메소드를 호출합니다. 예를 들어 assertEquals(a, b)으로 전화하면 결국 a.equals(b)이 호출됩니다. 그러나 assertEquals(b, a)으로 전화하면 결국 b.equals(a)이 호출됩니다.

도움이 되었기를 바랍니다.

+0

@entpnerd –

+0

np 설명 주셔서 대단히 감사합니다. 도와 줄 수있어서 기뻐. :-) – entpnerd

2

Assert.assertEquals()은 'equals() 클래스를 사용합니다.

클래스가 equals()을 오버라이드하여 심층적으로 비교하면 사용되는 것입니다. equals()을 덮어 쓰지 않으면 동일성 기반으로 Object#equals()이됩니다.

즉, 당신은 equals()의 의미를 결정합니다.