이번 챕터에서는 어떤 기능 또는 계층 단위로 작게 작성한 테스트를 검증할 때 유용하게 사용될 수 있는 **단위 테스트(Unit Test)**에 대한 가장 기초적인 내용을 학습해 보겠습니다.
단위 테스트란 이름처럼 작은 단위의 어떤 특정한 기능을 테스트하고, 검증하기 위한 도구를 의미합니다. 다른 말로, **테스트 케이스(Test Case)**를 작성한다고도 표현하는데, 그 과정에는 주로 입력 데이터, 실행 조건, 그리고 기대 결과에 대한 값이 포함됩니다.
스프링에서는 이러한 단위 테스트를 간편하고 효과적으로 수행할 수 있도록 자바 언어 기반의 JUnit이라는 오픈 소스 테스트 프레임워크를 제공하는데, 주로 각각의 단위 테스트는 메서드 단위로 작성됩니다. 좀 더 자세한 사용 방법은 아래에서 함께 확인해 보도록 하겠습니다.
MainTest 클래스 - 빈 조회 단위 테스트 작성
package com.springboot.v2;
import com.springboot.v2.discount.DiscountPolicy;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import static org.junit.jupiter.api.Assertions.*;
class KioskApplicationTest {
// 스프링 컨테이너 생성
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
// 빈 조회 테스트케이스
@Test
void findBean() {
// (1) given => 초기화 또는 테스트에 필요한 입력 데이터
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
// (2) when => 테스트 할 동작
DiscountPolicy discountPolicy = applicationContext.getBean("discountPolicy", DiscountPolicy.class);
// (3) then => 검증
Assertions.assertThat(discountPolicy).isInstanceOf(DiscountPolicy.class);
}
}
(1) given: 입력 데이터
(2) when: 실행 동작
getBean() 메서드를 사용하여 빈을 불러오는 것입니다.(3) then: 결과 검증
expected)과 실제 실행 결과의 값을 비교하여 테스트를 검증합니다.assertThat()을 사용한 검증 방법을 보여주고 있습니다.