테스트/JUnit
JUnit5 리스트가 정렬 조건에 맞게 정렬되었는지 검증하는법
ysk(0soo)
2023. 3. 4. 21:15
List가 특정한 기준으로 정렬할 때 보통, Comparator 인터페이스를 사용하여 정렬 기준을 지정한다.
// List를 정렬할 Comparator
Comparator<String> comparator = (s1, s2) -> s1.compareTo(s2);
// List를 정렬
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.sort(comparator);
이제, List가 특정한 기준으로 정렬되었는지 확인하려면, 다음과 같이 assert 메소드를 사용하여 비교하면 된다.
// List가 특정한 기준으로 정렬되었는지 확인
assertThat(list).isSortedAccordingTo(comparator);
assertThat() 메소드를 사용하여 List를 비교하고,
isSortedAccordingTo() 메소드를 사용하여 정렬 기준(comparator)에 따라 정렬되어 있는지 확인한다.
만약, List가 정렬되어 있지 않다면, 해당 assert 문에서 AssertionError 예외가 발생한다.
assertThat(list).isSortedAccordingTo((o1, o2) -> o1.compateTo(o2));
역순인지 검증하려면?
assertThat(list).isSortedAccordingTo((o1, o2) -> o2.compareTo());
요소로 검증하려면?
//ASC
assertThat(list).isSortedAccordingTo(Comparator.comparing(Date::getCount()));
// DESC
assertThat(list).isSortedAccordingTo((o1, o2) -> o2.count().compareTo(o1.count()));