Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- aws eks
- AWS 프리티어
- Azure
- bind
- bitnami kafka
Archives
- Today
- Total
기록
assertThat의 주요 메서드와 기본 사용법 본문
테스트 코드에서 assertThat을 사용할 때 가장 큰 장점은 가독성과 다양한 조건 메서드입니다. 아래 글에서는 assertThat과 함께 자주 사용하는 주요 메서드를 정리하고 예제 코드를 통해 각각의 메서드가 어떤 상황에 적합한지 설명하겠습니다.
1. 기본 비교 메서드
1-1. isEqualTo(expected)
실제 값이 기대 값과 같은지 비교합니다. 가장 기본적인 비교 메서드입니다.
assertThat(10).isEqualTo(10);
assertThat("Hello").isEqualTo("Hello");
1-2. isNotEqualTo(expected)
실제 값이 기대 값과 같지 않은지 비교합니다.
assertThat(10).isNotEqualTo(5);
assertThat("Hello").isNotEqualTo("World");
1-3. isSameAs(expected) / isNotSameAs(expected)
두 객체가 같은 객체인지 (레퍼런스 비교) 확인할 때 사용합니다.
String a = "Hello";
String b = a;
assertThat(a).isSameAs(b); // 같은 객체이므로 통과
assertThat(new String("Hi")).isNotSameAs(new String("Hi")); // 다른 객체이므로 통과
2. 참/거짓 비교 메서드
2-1. isTrue() / isFalse()
값이 true 또는 false인지 확인합니다.
assertThat(true).isTrue();
assertThat(false).isFalse();
2-2. isNull() / isNotNull()
값이 null인지 또는 null이 아닌지 비교합니다.
String value = null;
assertThat(value).isNull();
value = "Test";
assertThat(value).isNotNull();
3. 크기 비교 메서드
3-1. isGreaterThan(value) / isLessThan(value)
값이 주어진 값보다 크거나 작은지 비교합니다.
assertThat(10).isGreaterThan(5);
assertThat(5).isLessThan(10);
3-2. isBetween(start, end)
값이 주어진 범위 내에 있는지 비교합니다. 범위는 **포함형 (inclusive)**입니다.
assertThat(7).isBetween(5, 10); // 5 <= 7 <= 10
3-3. isCloseTo(expected, offset)
값이 기대 값과 일정한 허용 오차(offset) 내에 있는지 비교합니다.
assertThat(10.5).isCloseTo(10, within(0.5)); // 허용 오차 0.5 이내
4. 문자열 관련 메서드
4-1. startsWith(prefix) / endsWith(suffix)
문자열이 특정 접두사(prefix) 또는 **접미사(suffix)**로 시작하거나 끝나는지 비교합니다.
assertThat("Hello, World!").startsWith("Hello");
assertThat("Hello, World!").endsWith("World!");
4-2. contains(substring)
문자열에 특정 **부분 문자열(substring)**이 포함되어 있는지 비교합니다.
assertThat("Hello, World!").contains("Hello").contains("World");
4-3. isBlank() / isNotBlank()
문자열이 비어 있거나 공백인지 또는 비어 있지 않은지 비교합니다.
assertThat(" ").isBlank();
assertThat("Hello").isNotBlank();
5. 리스트/컬렉션 관련 메서드
5-1. contains(...)
리스트에 특정 요소가 포함되어 있는지 비교합니다.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
assertThat(names).contains("Alice", "Charlie");
5-2. containsExactly(...)
리스트가 주어진 요소들과 정확히 동일한 순서로 포함되어 있는지 비교합니다.
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
assertThat(names).containsExactly("Alice", "Bob", "Charlie");
5-3. hasSize(size)
리스트의 크기를 비교합니다.
List<Integer> numbers = Arrays.asList(1, 2, 3);
assertThat(numbers).hasSize(3);
5-4. isEmpty() / isNotEmpty()
리스트가 비어 있는지 또는 비어 있지 않은지 비교합니다.
List<Integer> emptyList = Collections.emptyList();
assertThat(emptyList).isEmpty();
List<Integer> nonEmptyList = Arrays.asList(1, 2, 3);
assertThat(nonEmptyList).isNotEmpty();
6. 예외 처리 관련 메서드
6-1. hasMessageContaining(substring)
예외 메시지가 특정 부분 문자열을 포함하는지 확인합니다.
Throwable thrown = catchThrowable(() -> { throw new IllegalArgumentException("Invalid input"); });
assertThat(thrown)
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("Invalid");
6-2. isInstanceOf(expectedType)
예외가 특정 타입의 인스턴스인지 확인합니다.
Throwable thrown = catchThrowable(() -> { throw new RuntimeException("Error"); });
assertThat(thrown).isInstanceOf(RuntimeException.class);
7. 객체 속성 비교 메서드
extracting(...)
객체에서 특정 속성을 추출하여 비교할 수 있습니다.
Person person = new Person("Alice", 30);
assertThat(person)
.extracting(Person::getName, Person::getAge)
.containsExactly("Alice", 30);
8. 요약
메서드 | 설명 | 예시 |
isEqualTo(expected) | 값이 기대 값과 같은지 비교 | assertThat(10).isEqualTo(10) |
isNotEqualTo(expected) | 값이 기대 값과 같지 않은지 비교 | assertThat(10).isNotEqualTo(5) |
isNull(), isNotNull() | 값이 null인지 또는 null이 아닌지 비교 | assertThat(null).isNull() |
startsWith(prefix) | 문자열이 특정 접두사로 시작하는지 비교 | assertThat("Hello").startsWith("He") |
contains(...) | 리스트나 문자열에 특정 값이 포함되어 있는지 비교 | assertThat(names).contains("Alice") |
hasSize(size) | 리스트나 컬렉션의 크기를 비교 | assertThat(numbers).hasSize(3) |
isInstanceOf(expectedType) | 예외가 특정 타입의 인스턴스인지 비교 | assertThat(thrown).isInstanceOf(RuntimeException.class) |
'Web > Spring' 카테고리의 다른 글
Spring에서 multipart/form-data로 리스트(List<T>) 데이터를 받는 방법 (0) | 2025.03.23 |
---|---|
Hibernate "unsaved transient instance" 오류 해결 방법 : CascadeType.ALL (0) | 2025.03.16 |
@Builder 사용 시 주의사항 – Dto에 기본 생성자를 추가해야 한다 (0) | 2025.02.07 |
QueryDSL에서 DTO 반환 방식: Projections.constructor vs. new QUserResponse (0) | 2025.01.26 |
[JPA] @Query 주의점 : nativeQuery와 @Table(name="orders") (0) | 2025.01.25 |
Comments