🔙뒤로가기

JUnit에서 제공되는 대표적인 assertion 메소드

  1. assertEquals(expected, actual)
  2. assertNotEquals(expected, actual)
  3. assertTrue(condition)
  4. assertFalse(condition)
  5. assertNull(object)
  6. assertNotNull(object)
  7. assertSame(expected, actual)
  8. assertNotSame(expected, actual)
  9. assertArrayEquals(expected, actual)

AssertThat

**assertThat**은 Hamcrest 라이브러리에 정의된 메소드로, JUnit에도 포함되어 있다. 이 메소드는 매우 유연한 검증 방식을 제공하며, 코드의 가독성을 향상시키는 데 도움이 된다.

assertThat 메소드는 첫 번째 인자로 검사하고자 하는 대상을 받고, 두 번째 인자로는 그 대상이 충족해야 하는 조건을 나타내는 Matcher 객체를 받는다. Matcher 객체는 Hamcrest 라이브러리에서 제공하는 다양한 static 메소드를 통해 생성할 수 있다.

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

// ...

@Test
public void test() {
    List<String> list = Arrays.asList("abc", "def", "ghi");

    assertThat(list, hasSize(3));  // 리스트의 크기가 3인지 확인
    assertThat(list, hasItem("abc"));  // 리스트에 "abc"가 포함되어 있는지 확인
    assertThat(list, not(hasItem("xyz")));  // 리스트에 "xyz"가 포함되어 있지 않은지 확인

    String str = "abc";

    assertThat(str, is("abc"));  // str이 "abc"와 동일한지 확인
    assertThat(str, not(is("def")));  // str이 "def"와 동일하지 않은지 확인
    assertThat(str, startsWith("a"));  // str이 "a"로 시작하는지 확인
    assertThat(str, endsWith("c"));  // str이 "c"로 끝나는지 확인
    assertThat(str, containsString("b"));  // str이 "b"를 포함하는지 확인
}

<aside> 🔥 **assertEquals**와 **assertThat**은 파라미터의 순서에 대해 약간 다른 관례를 갖고 있다.