SeouliteLab

[Java/자바] Hamcrest Collections Matcher를 활용한 컬렉션 검증 예제 본문

프로그래밍

[Java/자바] Hamcrest Collections Matcher를 활용한 컬렉션 검증 예제

Seoulite Lab 2024. 3. 15. 09:22

Hamcrest Collections Matcher를 사용하면 컬렉션에 대한 테스트를 더 쉽고 가독성 있게 작성할 수 있습니다. 이 라이브러리는 JUnit과 함께 사용되며, 컬렉션 요소의 일치 여부를 검증하는 다양한 매처를 제공합니다.

1. 컬렉션의 크기 검증

컬렉션의 크기를 검증하는 예제를 살펴보겠습니다.

// Hamcrest 라이브러리 임포트
import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;

// 컬렉션 크기 검증 예제
@Test
public void testCollectionSize() {
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    assertThat(names, hasSize(3));
}

위의 예제는 컬렉션의 크기가 3인지를 검증하는 테스트입니다. Hamcrest의 hasSize 매처를 사용하여 컬렉션의 크기를 검증합니다.

2. 컬렉션의 요소 검증

컬렉션의 요소를 검증하는 다양한 예제를 살펴보겠습니다.

// 컬렉션 요소 검증 예제
@Test
public void testCollectionElements() {
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    assertThat(names, hasItems("Bob", "Charlie"));
    assertThat(names, contains("Alice", "Bob", "Charlie"));
    assertThat(names, containsInAnyOrder("Charlie", "Bob", "Alice"));
}

위의 예제는 컬렉션의 요소가 주어진 값과 일치하는지를 검증합니다. hasItems, contains, containsInAnyOrder 등의 매처를 사용하여 다양한 검증을 수행할 수 있습니다.

3. 컬렉션의 특정 조건 검증

컬렉션의 특정 조건을 만족하는지를 검증하는 예제를 살펴보겠습니다.

// 컬렉션의 특정 조건 검증 예제
@Test
public void testCollectionCondition() {
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    assertThat(numbers, everyItem(greaterThan(0)));
    assertThat(numbers, not(hasItem(0)));
}

위의 예제는 컬렉션의 모든 요소가 양수인지를 검증하고, 특정 요소가 포함되지 않는지를 검증합니다. everyItem, not 등의 매처를 사용하여 다양한 조건을 검증할 수 있습니다.

위에서는 Hamcrest Collections Matcher를 사용하여 컬렉션을 검증하는 예제를 다뤄보았습니다. 이러한 유용한 라이브러리를 활용하여 테스트 코드를 작성하면 코드의 안정성을 높일 수 있습니다.