[기술 정리] 16. Test에서 AssertJ 활용

KangHo Lee's avatar
Dec 02, 2024
[기술 정리] 16. Test에서 AssertJ 활용
  • AssertJ는 유연하고 가독성이 높은 어설션(Assertion) 라이브러리로, 단위 테스트에서 사용되는 다양한 어설션을 제공하는 도구입니다.
  • JUnit이나 TestNG와 함께 사용되며, 테스트 코드를 더욱 직관적이고 읽기 쉽게 만들어줍니다.

주요 특징 및 장점

  1. 가독성 높은 코드
      • AssertJ는 자연어에 가까운 문법을 제공하여 테스트 코드의 가독성을 높입니다.
      • 예를 들어, assertThat(object).isEqualTo(expected)와 같은 형태로 어설션을 작성할 수 있습니다.
  1. 유연한 어설션
      • AssertJ는 객체의 상태를 확인하는 다양한 어설션 메서드를 제공합니다.
      • 개발자가 테스트하려는 조건을 명확하게 표현할 수 있도록 도와줍니다.
  1. 확장성
      • AssertJ는 사용자 정의 어설션을 쉽게 추가할 수 있는 확장성을 제공합니다.
      • 이를 통해 프로젝트의 특정 요구사항에 맞게 어설션을 커스터마이징할 수 있습니다.
  1. 체이닝
      • 어설션 메서드를 체이닝하여 여러 조건을 한 번에 테스트할 수 있습니다.
      • 이는 코드의 간결성과 명확성을 높입니다.
      assertThat(person) .hasName("John") .hasAge(30) .hasAddress("1234 Main St");
  1. 풍부한 컬렉션 어설션:
      • AssertJ는 컬렉션, 맵, 배열에 대한 다양한 어설션 메서드를 제공하여 복잡한 데이터 구조를 쉽게 테스트할 수 있습니다.
      assertThat(list) .isNotEmpty() .contains("element1", "element2") .doesNotContain("element3");

AssertJ를 사용한 테스트 코드

import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.List; public class MyTests { @Test public void testString() { String str = "Hello, world!"; Assertions.assertThat(str) .isNotNull() .startsWith("Hello") .endsWith("world!") .contains("world"); } @Test public void testList() { List<String> list = Arrays.asList("element1", "element2", "element3"); Assertions.assertThat(list) .isNotEmpty() .hasSize(3) .contains("element1", "element2") .doesNotContain("element4"); } }
  • 위 예제에서 Assertions.assertThat 메서드를 사용하여 문자열과 리스트에 대한 다양한 조건을 테스트합니다.
  • AssertJ의 체이닝 기능을 활용하여 여러 조건을 한 번에 테스트할 수 있습니다.
 
Share article

devleekangho