-
[Spring]Assertions의 contains 상황별로 달리 사용하기Spring 2022. 2. 20. 22:48
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); }
특이한 점은 string에도 쓸 수 있는 동시에 array나 set에도 쓸 수 있다.
@Test void stringContainsTest() { String str = "abc"; assertThat(str).contains("a", "b", "c"); } @Test void arrayContainsTest() { int[] arr = {1, 2, 3, 4}; assertThat(arr).contains(1, 2, 3, 4); } @Test void setContainsTest() { Set<Integer> set = Set.of(1, 2, 3); assertThat(set).contains(1, 2, 3); }
여기서 더 디테일한 테스트를 하기 위한 함수 두개가 있다.
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); }
containsonly는 contains에서 원소의 종류일치가 조건으로 추가된다.
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); }
containsExactly는 contains에서 순서, 중복, 종류의 일치 조건들이 추가된다.
출처 : JUnit 5 에서 contains 로 포함 여부 테스트 :: 뱀귤 블로그 (tistory.com)
'Spring' 카테고리의 다른 글
[Spring] controller pageable에 디폴트값 넣어주기 (0) 2022.03.03 [Querydsl] querydsl로 동적으로 sort하기 (1) 2022.03.02 [Spring] 개발 편의 오픈소스 spring devtools (0) 2022.01.18 [Spring] Cascade관계에서 추가로 활용하면 좋을 옵션 orphanRemoval (0) 2022.01.18 [Spring] 프록시와 연관관계 관리 (0) 2022.01.18