Java/Java 학습

[JAVA] isEqualTo() vs isSameAs() vs isInstanceOf() 비교

HSY_mumu 2022. 5. 17. 15:11
728x90

1. isSameAs() 와 isEqualTo() 와 isInstatnceOf() 비교

1) isSameAs() -> == 

isSameAs() 는 주소값을 비교하는 메서드다.

String a = "apple";
String b = a;

// 주소값이 같은지 검증
assertions.assertThat(a).isSameAs(b);

2) isEqualTo() -> equals() 메서드 

isEqualTo() 는 대상의 내용 자체를 비교하는 메서드다.

String a = "apple";
String b = "apple";

// 1. 내용이 같은지 검증 -> 성공
assertions.assertThat(a).isEqualTo(b);

// 2. 주소값이 같은지 검증 -> 실패
assertions.assertThat(a).isSameAs(b);
  • isEqualTo()는 equals() 메서드로 두 대상의 내용이 같은지 비교한다. 그래서 a, b는 실제로 다른 주소값을 가지고 있지만, isEqualTo()로 비교하면 테스트가 성공한다.

3) isInstatnceOf() -> instanceof 연산자

isInstanceOf() 는 해당 타입의 인스턴스인지를 비교하는 메서드다. 

instanceof 연산자는 객체가 특정 클래스나 인터페이스로부터 생성된 것인지를 판별한다.

(객체 instanceof 클래스) 에서 객체가 해당 클래스 혹은 그 하위 클래스로부터 생성된 객체이면 true, 아니면 false를 반환한다.

// B extends A

A a = new A();
B b = new B();

assertThat(a).isInstanceOf(A)
assertThat(a).isInstanceOf(B)	// 실패
assertThat(b).isInstanceOf(A)	
assertThat(b).isInstanceOf(B)
  • 인스턴스 a의 타입은 A로 B의 하위 타입이 아니므로 실패다.

[참고] https://dev-emmababy.tistory.com/55

 

isEqualTo vs isSameTo 비교(깨알 instanceof연산자내용 포함)

Java JUnit 테스트에서 assertThat구문은 어떤조건이 참인지 확인하는 구문이다 [사용예시] assertThat구문에서 많이 사용하는 메서드인 isEqualTo 와 isSameTo를 비교해보겠다. [isSameTo] 일반 Primitive type..

dev-emmababy.tistory.com

 

728x90