본문 바로가기

개발/Spring

[Spring] Assertj 테스트 지원 메서드

Assertj 는기존 JUnit에서 제공하던 Assertions 테스트 클래스를 조금 더 가독성 있게 지원하는 자바 라이브러리이다.

테스트에 필요한 대부분의 메서드를 제공한다.

또한 메서드 체이닝을 지원하기 때문에, 가독성이 높다.

 

아래와 같이 의존성을 추가할 수 있지만, springboot-starter-test 를 implemetation 했다면 내장되어 있다.

testImplementation 'org.assertj:assertj-core:3.22.0'

가장 기본적인 테스트로 동등성 검증이 있다.

String test = "test";
assertThat(test).isEqualTo("test");

아래와 같이 메서드 체이닝이 가능하다.

String moreTest = "assertj assertions test";
assertThat(moreTest)
        .isNotEmpty()
        .contains("test")
        .doesNotContain("junit")
        .startsWith("assertj")
        .endsWith("t");

리스트 내에서 특정 필드만 검증

List<Person> myList = List.of(new Person("aaa", 22),
        new Person("kkk", 23),
        new Person("bbb", 25),
        new Person("ddd", 36),
        new Person("zzz", 67));

assertThat(myList).extracting("name").contains("aaa");

@Getter
@AllArgsConstructor
static class Person {
    String name;
    Integer age;
}

예외 발생에 대한 검증도 가능

assertThatThrownBy(() -> {
    throw new RuntimeException("Exception!!");
})
        .isInstanceOf(RuntimeException.class)
        .hasMessageContaining("!!");

JUnit의 Assertions 라이브러리의 assertAll 메서드와 조합도 가능하다.

assertAll(
        () -> assertThat(test).isEqualTo("test"),
        () -> assertThat(moreTest).contains("test"),
        () -> assertThat(myList).extracting("age").contains(23)
);

훨씬 더 많고 다양한 기능들이 있지만, 주로 사용하는 메서드 위주로 기록했다.