이번에는 각 자료형 별로 사용할 수 있는 Assertion들을 소개한다.
Object Assertions
Object(객체)의 동등성을 확인해야되는 경우가 있다 하지만 아래의 코드는 객체의 레퍼런스를 비교하므로 동등성을 비교할 수 없다.
Dog fido = new Dog("Fido", 5.25);
Dog fidosClone = new Dog("Fido", 5.25);
assertThat(fido).isEqualTo(fidosClone);
isEqualTo
대신 isEqualToComparingFieldByFieldRecursively()
를 사용하여 동등성을 비교할 수 있다.
assertThat(fido).isEqualToComparingFieldByFieldRecursively(fidosClone);
Boolean Assertions
boolean을 확인하는 것에는 isTrue()
와 isFalse()
가 있다.
예시
assertThat("".isEmpty()).isTrue();
Iterable/Array Assertions
Iterable이나 Array를 확인하는 하는 방법에는 여러가지가 있다. 아래 예시를 참고한다.
List<String> list = Arrays.asList("1", "2", "3");
assertThat(list).contains("1"); // "1"을 포함하고 있는지 확인
assertThat(list).isNotEmpty(); // 비어있지 않는지 확인
assertThat(list).startsWith("1"); // "1"로 시작하는 배열인지 확인
아래와 같이 여러 개의 Assertion을 구성할 수도 있다.
assertThat(list)
.isNotEmpty() // 비어있지 않고
.contains("1") // 1을 포함하고
.doesNotContainNull() // null을 포함하지 않고
.containsSequence("2", "3"); // "2", "3" 순서대로 요소를 포함하고 있는 부분이 있는지 확인
Character Assertions
character는 다음의 예시를 통해 확인한다.
assertThat(someCharacter)
.isNotEqualTo('a') // 'a'가 아닌지
.inUnicode() // 유니코드 테이블에 포함되어 있는지
.isGreaterThanOrEqualTo('b') // 'b'보다 큰지
.isLowerCase(); // 소문자인지 확인
Class Assertions
class는 현재 클래스가 인터페이스인지 확인이 가능하다.
assertThat(Runnable.class).isInterface();
또한 class간의 상속 관계를 확인할 수 있다.
class Jedi {}
class HumanJedi extends Jedi {}
// this assertion succeeds:
assertThat(Jedi.class).isAssignableFrom(HumanJedi.class);
// this assertion fails:
assertThat(HumanJedi.class).isAssignableFrom(Jedi.class);
File Assertions
file은 아래의 예시를 통해 확인한다.
assertThat(someFile)
.exists() // 파일이 존재하는지
.isFile() // 디렉토리가 아닌 파일인지
.canRead() // 읽기 권한이 있는지
.canWrite(); // 쓰기 권한이 있는지 확인
InputStream Assertions
hasSameContentAs()
를 이용하여, 입력에대한 확인을 할 수 있다.
assertThat(given).hasSameContentAs(expected);
Map Assertions
map은 아래의 예시를 통해 확인한다.
assertThat(map)
.isNotEmpty() // 비어있지않은지
.containsKey(2) // 키 2를 포함하고 있는지
.doesNotContainKeys(10) // 키 10을 포함하지 않는지
.contains(entry(2, "a")); // 키 2에 "a"의 값을 가지는지 확인
댓글남기기