JUnit

허배령·2025년 7월 14일

괴발개발 TIL

목록 보기
53/54

JUnit을 이용한 Spring Boot 테스트

JUnit : Java 진영의 대표적인 테스트 프레임워크

  • 단위 테스트를 작성하고 자동으로 검증하기 위해 사용함.
  • 테스트 자동화, 리팩토링 안정성 확보, 회귀 테스트에 필수임.
  • 현재는 JUnit 5 (Jupiter) 가 표준.
    https://junit.org/

1. JUnit의 주요 특징

  • 어노테이션 기반 ( @Test , @BeforeEach , @AfterEach 등)
  • 테스트 결과 자동 확인 (pass/fail)
  • 다양한 테스트 메서드 제공 ( assertEquals , assertTrue ) 등

2. JUnit 기본 어노테이션

어노테이션설명
@Test테스트 메서드 표시
@BeforeEach각 테스트 전에 실행되는 메서드
@AfterEach각 테스트 후에 실행되는 메서드
@BeforeAll모든 테스트 전에 1회 실행
@AfterAll모든 테스트 후에 1회 실행
@Disabled테스트 비활성화 (실행 안 됨)

3. Spring Boot에서는 JUnit5가 기본 내장되어 있음 (별도 설정 불필요)

  • spring-boot-starter-test 에 포함된 디펜던시 구조:
// build.gradle
dependencies {
...
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

JUnit5가 기본 내장 되어있으나 테스트 하고싶은 프로젝트의 Build Path - Libararies - Modulepath 에 직접 추가해야함.

단위 테스트와 통합 테스트

1. 단위 테스트 (Unit Test)

  • 메서드나 클래스 하나를 독립적으로 테스트 하는 것.
  • 목적: 로직 자체의 정확성 검증
  • 특징
    - DB나 서버 없이 실행
    • 빠르고 가볍다
    • 주로 Service, 유틸 메서드 등 테스트

2. 통합 테스트 (Integration Test)

  • 여러 컴포넌트(Controller, Service, Repository 등)의 연동을 통째로 테스트 하는 것.
  • 목적: 실제 환경과 유사하게 전체 흐름이 잘 작동하는지 검증
  • 특징
    - Spring Context를 실제로 로딩
    • DB와 실제로 연결하거나 임시 DB 사용
    • 실행 속도는 느리지만 실전과 유사

XXXBootApplicationTests.class

Spring Boot 프로젝트 생성 시 기본으로 만들어지는 테스트 클래스

@SpringBootTest // Spring Boot 애플리케이션의 전체 ApplicationContext를 로드하여 테스트
class BoardProjectBootApplicationTests {
@Test
void contextLoads() {
// 스프링 컨텍스트가 정상적으로 로드되는지 확인하는 테스트
}
}

@SpringBootTest
SpringBoot ApplicationContext를 로드해서 테스트한다는 의미로, 애플리케이션이 실제 실행될 때와 거의 같은 환경으로 스프링 빈, 설정 파일 등을 모두
로드함.
통합 테스트, 컨텍스트 초기화, 전체 애플리케이션 레벨에서의 설정 확인에 사용

contextLoads() 메서드
스프링 컨텍스트가 정상적으로 로드되는지 확인하는 테스트 목적의 메서드

해당 프로젝트 우클릭

Build Path에 맨 아래 Configure Build Path

Libraries 탭 가서 ModulePath 클릭 후 Add Library

JUnit 클릭 후 next

버전이 JUnit 5인지 확인 후 finish 후 오류나면 Refresh Build Gradle

profile
인생은 변수

0개의 댓글