자주 쓰이는 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.