java

[Java] AssertThat

윤밥밥 2023. 10. 26. 19:12
  • org.junit.Assert.assertThat

    • junit에서 지원하는 assertThat이다.
    • 기본 형태는 아래와 같다
      public static <T> void assertThat(T actual, Matcher<? super T> matcher)
    • 첫번째 매개변수로 비교할 값
    • 두번째 매개변수로 비교하는 로직(matcher)를 넣는다.
    • matcher를 직접 작성하는 것은 좋지 못하고 주어진 것을 사용하자.
    • 이는 기능적으로 불편하여 assertj의 assertThat을 주로 사용한다.
  • org.assertj.core.api.Assertions.assertThat

    • assertThat(타겟).메소드().메소드() 의 메소드 체이닝 패턴 형식으로 사용한다.
    • 사용될 수 있는 메소드로는 isEqualTo(e), contains(e), doesNotContain(e), startsWith(e), endsWith(e), isNotEmpty(), isPositive(n), isGreaterThan(n) 등이 있다.
    • 값 비교
      • assertThat(a).isEqualTo(b);
        • a와 b의 참조가 같은 지
      • assertThat(a).isEqualToComparingFieldByFieldRecursively(b);
        • a와 b의 필드 값이 같은지
    • Boolean 비교
      • assertThat(a).isTure();
      • assertThat(a).isFalse();
    • assertThat(a).contains(b);
      • a가 b를 포함하는 지
      • iterable,array,assertion 모두가능
    • assertThat(a).isNotEmpty();
      • 리스트가 비어있지 않은 지
      • iterable,array,assertion 모두가능
    • assertThat(a).doesNotContain(b);
      • a가 b를 포함하지 않는 지
      • iterable,array,assertion 모두가능
    • assertThat(a).startsWith(b);
      • a가 b로 시작하는지
      • iterable,array,assertion 모두가능
    • assertThat(a).endsWith(b);
      • a가 b로 끝나는 지
      • iterable,array,assertion 모두가능
    • assertThat(a).isNotEmpty(b);
      • iterable,array,assertion 모두가능
    • assertThat(a).isPositive(b);
    • assertThat(a).isGreaterThan(b);
    • assertThat(result).contains("2", "1");
      • result가 2, 1을 포함하는지
    • assertThat(result).containsExactly("1", "2");
      • result가 1,2만 있는지
    • assertThatThrownBy
      • 익셉션이 발생하는 케이스를 테스트할 때 사용
      • isInstanceOf(a)
        • 예상되는 예외를 a에 입력
      • hasMessageContaining(a)
        • 예외 메세지에 a가 포함되어 있는 지