JUnit
1. 목적
- 단위 테스트를 위해 사용
- 테스트를 구동하고 테스트 결과를 확인하는데 중점
2. 어노테이션
@Test, @Before, @After, @BeforeEach, @AfterEach 등의 어노테이션을 사용하여 테스트 메서드의 동작을 제어
3. Assertion
Assert 클래스의 정적 메서드를 사용하여 단순한 Assertion을 수행
(예: assertEquals(expected, actual))
4. 단순함
- 간단하고 직관적인 테스트를 위한 프레임워크
- 핵심 기능에 중점
AssertJ
1. 목적
- 풍부한 Assertion 문법을 제공하여 테스트 코드의 가독성을 높이고 풍부한 메시지를 통해 문제의 원인을 신속하게 파악 가능
- 풍부하고 표현력 있는 Assertion
2. 메서드 체이닝
- 메서드 체이닝을 활용하여 풍부한 표현력을 제공
(예: assertThat(actual).isEqualTo(expected).isNotNull())
3. 커스텀 메시지
- 실패 시 생성되는 에러 메시지를 사용자가 커스터마이징 가능
4. 컬렉션, 객체 테스트
- 컬렉션과 객체에 대한 다양한 Assertion을 지원
(예: assertThat(list).hasSize(3).contains("apple").doesNotContain("orange"))
5. 타입 추론
- Java8 이후의 타입 추론을 활용하여 안정성을 제공