- AssertJ는 유연하고 가독성이 높은 어설션(Assertion) 라이브러리로, 단위 테스트에서 사용되는 다양한 어설션을 제공하는 도구입니다.
- JUnit이나 TestNG와 함께 사용되며, 테스트 코드를 더욱 직관적이고 읽기 쉽게 만들어줍니다.
주요 특징 및 장점
- 가독성 높은 코드
- AssertJ는 자연어에 가까운 문법을 제공하여 테스트 코드의 가독성을 높입니다.
- 예를 들어,
assertThat(object).isEqualTo(expected)
와 같은 형태로 어설션을 작성할 수 있습니다.
- 유연한 어설션
- AssertJ는 객체의 상태를 확인하는 다양한 어설션 메서드를 제공합니다.
- 개발자가 테스트하려는 조건을 명확하게 표현할 수 있도록 도와줍니다.
- 확장성
- AssertJ는 사용자 정의 어설션을 쉽게 추가할 수 있는 확장성을 제공합니다.
- 이를 통해 프로젝트의 특정 요구사항에 맞게 어설션을 커스터마이징할 수 있습니다.
- 체이닝
- 어설션 메서드를 체이닝하여 여러 조건을 한 번에 테스트할 수 있습니다.
- 이는 코드의 간결성과 명확성을 높입니다.
assertThat(person)
.hasName("John")
.hasAge(30)
.hasAddress("1234 Main St");
- 풍부한 컬렉션 어설션:
- 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