스프링부트 프로젝트를 하면서 테스트 케이스를 작성할 때 사용하는 메서드 중의 하나인 Assertions의 두 가지 버전에 대해 설명하고자 한다.
☝️ Assertions (org.junit.jupiter.api 패키지 제공)
: 테스트 케이스를 작성할 때, JUnit과 함께 자주 사용되는 것 중 하나인 Assertion
테스트 결과를 검증하고 예상 값과 실제 값이 일치하는지 확인하는 데 사용된다.
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class MyServiceTest {
@Test
public void testAddition() {
MyService myService = new MyService();
int result = myService.add(2, 3);
// 예상 값과 실제 값이 일치하는지 확인
assertEquals(5, result, "Addition result should be 5");
}
@Test
public void testMultiplication() {
MyService myService = new MyService();
int result = myService.multiply(2, 3);
// 예상 값과 실제 값이 일치하는지 확인
assertEquals(6, result, "Multiplication result should be 6");
}
}
해당 예제에서 사용된 ‘assertEquals()’ 메서드는
첫 번째 매개변수로 예상 값, 두 번째 매개변수로 실제 값, 세 번째 매개변수로는 실패할 경우 출력할 메시지를 받는다.
(❗세 번째 매개변수는 생략 가능)
✌️ Assertions (org.assertj.core.api 패키지 제공)
: 앞서 소개한 JUnit의 Assertions보다 더 풍부하고 가독성이 뛰어난 검증 기능을 제공한다.
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class MyServiceTest {
@Test
public void testAddition() {
MyService myService = new MyService();
int result = myService.add(2, 3);
// AssertJ를 사용한 검증
assertThat(result).isEqualTo(5);
}
@Test
public void testMultiplication() {
MyService myService = new MyService();
int result = myService.multiply(2, 3);
// AssertJ를 사용한 검증
assertThat(result).isEqualTo(6);
}
}
해당 예제에서는 ‘assertThat()’ 메서드를 사용하여 테스트 대상을 감싸고, ‘isEqualTo()’메서드를 사용하여 예상 값과 비교한다.
또한 AssertJ는 체이닝(Chaining)을 통해 여러 검증을 한 줄로 연결할 수 있어 가독성이 높아진다.
예제 메소드들
- isEqualTo : 객체 비교에 사용
- isGreaterThan / isLessThan : 숫자 비교에 사용
결론적으로 Assertions을 사용해 테스트를 실행했을 때,
테스트 결과를 확인할 수 있는 테스트 리포트에서 초록색(통과 ✅)또는 빨간색(실패 ❌)으로 확인할 수 있다.
이는 콘솔에 로그를 출력하는 것보다 시각적으로 더 명확하게 확인되기에 디버깅과 유지 보수에 효율적이라고 할 수 있다.
💡 TIP!
예제 코드에서 보는 것처럼 static import 하게 되면 앞에 Assertions은 생략해서 사용 가능
반응형
'Programming > JAVA' 카테고리의 다른 글
테스트 케이스 - assertThrows (0) | 2024.01.09 |
---|---|
AfterEach 어노테이션 사용법 (2) | 2024.01.04 |
Getter & Setter (0) | 2023.12.19 |
ResponseBody 어노테이션 사용법 (0) | 2023.12.19 |
Optional 클래스 (0) | 2022.08.18 |