Closed jun108059 closed 2 years ago
@sawooook
책에서 설명하는 요약 정보를 담는 경우
에 발생할 수 있는 이슈인 것 같습니다.
예를 들면, 아래와 같은 Member 클래스에서 toString을 재정의할 때 요약하다가 id를 제외하였다고 가정하고 Test를 하면 비슷한 상황을 재현할 수 있을 것 같습니다.
public class Member {
long id;
String name;
int age;
@Override
public String toString() {
return name + " " + age;
}
}
완벽하지는 않지만 재현한 Test 코드입니다.
import static org.junit.jupiter.api.Assertions.*;
class ToStringInfoTest {
@Test
void 왜_틀렸다고_할까요() {
Member infoA = new Member(1L, "영준", 28);
Member infoB = new Member(2L, "영준", 28);
assertEquals(infoA, infoB);
}
}
org.opentest4j.AssertionFailedError: expected: study.yjpark.chapter03.item12.Member@25ce9dc4<영준 28> but was: study.yjpark.chapter03.item12.Member@74ea2410<영준 28>
Assert 구문에 객체를 넘길 때, toString을 호출하기 때문에 동명이인의 영준 28
이라는 Member가 다르지만
재정의한 toString 메서드에서 주요 정보를 잘못 선택한 경우를 보여준 경우입니다.
74P 10번째 줄을 보게 되면
Assertion failure: expected {abc, 123}, but was {abc, 123} 부분이 있는데 해당 부분이 왜 단언실패일까요?! 똑같아 보여서 성공같은데 ...! 이부분 궁금합니다!