Post

자주 쓰이는 assertThat 메서드

자주 쓰이는 assertThat 메서드


1. 단순 값 비교

1
2
3
4
5
@Test
public void testSimpleValueComparison() {
    int a = 3 + 5;
    assertThat(a).isEqualTo(8);
}


2. 문자열 비교

1
2
3
4
5
6
7
8
9
@Test
public void testStringComparison() {
    String str = "Hello, World!";
    assertThat(str).isEqualTo("Hello, World!");
    assertThat(str).startsWith("Hello");
    assertThat(str).endsWith("World!");
    assertThat(str).contains("Hello");
    assertThat(str).isNotEmpty();
}


3. 컬렉션 검증

1
2
3
4
5
6
7
8
9
10
11
@Test
public void testCollection() {
    List<String> name = Arrays.asList("Park", "Jin", "Hong");

    assertThat(name)
        .hasSize(3)
        .contains("Jin", "Hong")
        .doesNotContain("Lee")
        .containsExactly("Park", "Jin", "Hong")
        .containsExactlyInAnyOrder("Jin", "Hong", "Park");
}


4. 객체 필드 비교

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Getter
@AllArgsConstructor
class Person {
    private String name;
    private int age;
}

@Test
public void testObjectFieldComparison() {
    Person person = new Person("Park", 24);

    assertThat(person.getName()).isEqualTo("Park");
    assertThat(person.getAge()).isEqualTo(24);

	// 람다표현식 사용하면,
    assertThat(person)
        .extracting(Person::getName, Person::getAge)
        .containsExactly("Park", 24);
}


5. 예외 검증

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void testException() {
    Throwable thrown = catchThrowable(() -> {
        throw new IllegalArgumentException("Invalid argument");
    });

    assertThat(thrown)
        .isInstanceOf(IllegalArgumentException.class) // 이 부분!!
        .hasMessage("Invalid argument");

	// <참고> catchThrowable은 람다표현식이나 Callable을 인자로 받고,
	// 람다표현식에서 예외가 발생하면, 그것을 Throwable 타입으로 반환
	// 예외 발생 안하면, null 반환
}


6. 배열 검증

1
2
3
4
5
6
7
8
9
10
@Test
public void testArray() {
    int[] arr = {1, 2, 3, 4, 5};

    assertThat(arr)
        .hasSize(5)
        .contains(3)
        .containsExactly(1, 2, 3, 4, 5)
        .doesNotContain(6);
}


8. 참/거짓 검증

1
2
3
4
5
6
7
@Test
public void testBoolean() {
    boolean b = true;

    assertThat(b).isTrue();
    assertThat(!b).isFalse();
}


9. 객체 동등성 검증

1
2
3
4
5
6
7
8
@Test
public void testObjectEquality() {
    Person person1 = new Person("Jane", 30);
    Person person2 = new Person("Jane", 30);

    assertThat(person1).isEqualTo(person2);
	// 다른건 isNotEqualTo로 검증!
}


10. 날짜와 시간 검증

1
2
3
4
5
6
7
8
9
10
11
import java.time.LocalDate;
import java.time.LocalDateTime;

@Test
public void testDateTime() {
    LocalDate today = LocalDate.now();
    LocalDateTime now = LocalDateTime.now();

    assertThat(today).isBeforeOrEqualTo(LocalDate.of(2024, 12, 31));
    assertThat(now).isAfter(LocalDateTime.of(2024, 1, 1, 0, 0));
}
This post is licensed under CC BY 4.0 by the author.