프로그램을 짜던 중 리스트에 있는 원소가 저장되었는지 확인하고 싶어 테스트를 하고 싶은데 어떤 메소드가 좋은지 찾아보다가 contains 메소드를 찾아서 알아보았다.
먼저 아래와 같이 core.api.Assertions를 import해주는게 우선.
import static org.assertj.core.api.Assertions.*;
contains
contains 메소드는 단순하다.
중복 , 순서에 관계 없이 값만 일치하면 테스트가 성공한다.
void containsTest() {
List<Integer> list = Arrays.asList(1, 2, 3);
// Success: 모든 원소를 입력하지 않아도 성공
assertThat(list).contains(1, 2);
// Success: 중복된 값이 있어도 포함만 되어 있으면 성공
assertThat(list).contains(1, 2, 2);
// Success: 순서가 바뀌어도 값만 맞으면 성공
assertThat(list).contains(3, 2);
// Fail: List 에 없는 값을 입력하면 실패
assertThat(list).contains(1, 2, 3, 4);
}
containsOnly, containsExactly
더 구체적인 테스트를 위해 위 두 메소드를 이용한다.
containsOnly
순서, 중복을 무시하는 대신 원소값과 갯수가 정확히 일치
/*
* containsOnly 실패 케이스
*
* assertThat(list).containsOnly(1, 2); -> 원소 3 이 일치하지 않아서 실패
* assertThat(list).containsOnly(1, 2, 3, 4); -> 원소 4 가 일치하지 않아서 실패
*/
@Test
void containsOnlyTest() {
List<Integer> list = Arrays.asList(1, 2, 3);
assertThat(list).containsOnly(1, 2, 3);
assertThat(list).containsOnly(3, 2, 1);
assertThat(list).containsOnly(1, 2, 3, 3);
}
containsExactly
순서를 포함해서 정확히 일치
/*
* containsExactly 실패 케이스
*
* assertThat(list).containsExactly(1, 2); -> 원소 3 이 일치하지 않아서
* assertThat(list).containsExactly(3, 2, 1); -> list 의 순서가 달라서 실패
* assertThat(list).containsExactly(1, 2, 3, 3); -> list 에 중복된 원소가 있어서 실패
*/
@Test
void containsExactlyTest() {
List<Integer> list = Arrays.asList(1, 2, 3);
assertThat(list).containsExactly(1, 2, 3);
}
Reference
https://bcp0109.tistory.com/317
'😀Language > Java' 카테고리의 다른 글
Arrays.asList() 와 List.of() 정리 (0) | 2024.10.17 |
---|---|
정적 팩토리 메서드(Static Factory Method)란? (2) | 2024.10.03 |
Optional<T> isPresent(), ifPresent(), orElseThrow (0) | 2024.03.14 |
[Optional이란?] (0) | 2024.03.14 |
[람다와 스트림] (0) | 2024.03.14 |