| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- Zeppelin
- 레디스
- EMR
- 머신러닝
- ec2
- redash
- 설정
- hive
- fastcampus
- Jenkins
- Mac
- 클러스터
- aws
- Cluster
- 예제
- config
- Docker
- gradle
- Kafka
- 젠킨스
- 자동
- vue
- 로그인
- 자바
- java
- Redis
- 간단
- login
- spring
- SpringBoot
- Today
- Total
코알못
[TDD] SpringBoot 를 통한 TDD 손쉬운 작성 - 05) 테스트 코드 품질 높이기! - 03 본문

저번 시간까지는 하나의 값에 대한 검증하는 방법을 배웠다!
이번 시간에는 컬렉션 검증에 자주 사용되는 AssertJ 메서드에서 알아보자!
1) extracting() 을 이용한 정보 추출 검증, contains() 를 통한 내부값 포함 여부 검증
객체 리스트에서 특정 필드만 추출해서 검증하고 싶을 때 extracting()을 사용해보자!
예를 들어 객체 리스트에서 name 필드만 추출해서 검증할 수 있다.
assertThat(users)
.extracting(User::getName)
.contains("Kim", "Lee");
이렇게 하면 객체 내부의 값을 꺼내서 원하는 데이터만 집중적으로 검증할 수 있다!
그리고 contains() 를 통해 내부에 해당 값을 전부 포함하고 있는지 확인한다.
2) containsAll() 목록 포함 여부 검증
앞에 contains() 와 기능 부분은 동일하게 해당 값을 전부 포함하는지 확인할 수 있다!
다만 다른점은 내부 매개변수를 직접 정의가 아닌 컬렉션으로 정의할 수 있다.
아래 예시를 보자!
assertThat(users)
.extracting(User::getName)
.containsAll(Arrays.asList("Kim","Lee"));
Arrays.asList 와 같이 컬렉션을 넘겨 해당 값들을 전부 포함하고 있는지 확인한다.
정의한 값 중에 하나라도 없으면 오류가 발생하고, 해당 값 이외에 다른 값이 더 있어도 오류 발생하지 않는점은 위 contains() 와 동일하다!
3) doesNotContain() 요소가 포함되지 않았는지 검증
특정 값이 리스트에 존재하지 않는지 확인하고 싶다면 doesNotContain()을 사용해보자!
assertThat(users)
.extracting(User::getName)
.doesNotContain("Kim");
이렇게 하면 name 중에 "Kim' 이 있다면 검증 실패가 된다.
doesNotContain 을 사용하면 해당 요소가 목록에 포함되어 있지 않은지 검증할 수 있다!
4) isSortedAccordingTo() 정렬 기준 검증
리스트가 특정 기준으로 정렬되어 있는지 확인하고 싶다면 isSortedAccordingTo()를 사용해보자!
오름차순인지 보려면 아래와 같이 Comparator 코드에는 natualOrder() 을 사용하면 되며
우리가 보통 네츄럴 하게 생각하는 정렬은 오름차순이기에 natualOrder 가 오름차순 정렬을 검증하는것 이라고 한다.
assertThat(numbers).isSortedAccordingTo(Comparator.naturalOrder());
오름차순은 아래와 같이 간단하게 검증 할 수 있다!
assertThat(numbers).isSorted();
만약에 내림차순 정렬 여부를 검증 한다고 하면
뒤에 Comparator 코드만 내림차순인 reverseOrder 로 변경하면 된다!
assertThat(numbers)
.isSortedAccordingTo(Comparator.reverseOrder());
직접 Comparator 기준을 작성해서 넣을수도 있다!
Comparator 코드 작성하는 방법은 다음에 필요할때 검색해서 사용해보도록 하고 현재는 검증 방법만 알아두도록 하자!
5) containsExactly() 정확한 값과 순서 검증
앞에서 contains(), containsAll() 을 통해 리스트의 값이 모두 포함되어 있는지를 검증 할 수 있었다.
여기에 순서까지 체크하고 싶다면 containsExactly()를 사용해보자!
assertThat(numbers)
.containsExactly(1, 2, 3);
이 메서드는
- 값이 정확히 같아야 하고
- 순서도 동일해야 하고
- 추가 데이터도 없어야 한다
즉 완전히 동일한 목록인지 검증할 때 사용한다!
6) containsExactlyElementsOf() 동일 목록 + 동일 순서 검증
containsExactlyElementsOf()도 containsExactly()와 비슷하다.
assertThat(numbers)
.containsExactlyElementsOf(List.of(1, 2, 3));
이 메서드 역시
- 값 동일
- 순서 동일
- 추가 데이터 없음
을 검증한다.
차이점은 입력 방식이다!
- containsExactly() → 개별 값 입력
- containsExactlyElementsOf() → 컬렉션 형태 입력
즉 검증 대상 데이터를 List나 Set 형태로 받을 때 사용하기 편하다!
끝!
'JAVA' 카테고리의 다른 글
| [문자인코딩] 02) 문자 인코딩/디코딩 실습 (0) | 2026.03.17 |
|---|---|
| [문자인코딩] 01) 문자 인코딩이란? (1) | 2026.03.16 |
| [TDD] SpringBoot 를 통한 TDD 손쉬운 작성 - 04) 테스트 코드 품질 높이기! - 02 (0) | 2026.03.08 |
| [TDD] SpringBoot 를 통한 TDD 손쉬운 작성 - 03) 테스트 코드 품질 높이기! - 01 (1) | 2026.03.02 |
| [TDD] SpringBoot 를 통한 TDD 손쉬운 작성 - 02) TDD 작성 해보기! (0) | 2026.03.01 |