<목차>
1. JUnit ?
2. JUnit 모듈
3. 테스트 환경 설정
[JUnit]
JUnit 의 J 는 Java의 약자로, JUnit 은 자바에서 활용되는 대표적인 테스트 프레임워크이다.
단위 테스트(Unit Tests)뿐 아니라, 통합 테스트(Integration Tests)를 할 수 있는 기능을 제공한다.
JUnit 의 특징으로는 다음과 같은 내용이 있다.
- 몇 개의 어노테이션만 활용하여 간편하게 테스트 코드를 작성할 수 있다.
- 단정문(Assert)를 통하여 테스트 케이스의 기댓값이 정상적으로 도출됐는지 검토할 수 있다.
또한, 현 시점 사용되는 JUnit 5 버전에서는 다음과 같은 기능이 제공된다.
- JUnit 5는 확장 가능한 모델을 제공하여, 사용자 정의 확장을 쉽게 추가할 수 있다.
커스텀 확장은 @ExtendWith 어노테이션을 사용한다. - 어노테이션을 활용해 조건부 테스트 기능을 제공한다.
@EnabledIf, @DisabledIf, @EnabledOnOs, @DisabledOnOs - JUnit 5는 @TestFactory를 사용하여 동적으로 테스트를 생성할 수 있다.
이는 런타임 시에 테스트 케이스를 생성하고 실행할 수 있게 해준다. - 병렬 테스트를 지원한다.
- assertThrows() 를 활용하여 특정 예외가 발생하는지 테스트 할 수 있다.
https://junit.org/junit5/docs/snapshot/user-guide/#overview-what-is-junit-5
JUnit 5 User Guide
Although the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and custo
junit.org
[JUnit 모듈]
이러한 JUnit5 는 크게 아래와 같이 세가지의 모듈로 구성된다.
- JUnit Platform
- JVM에서 테스트를 하기 위한 뼈대 역할을 한다.
- 테스트를 발견 / 수행 / 결과 보고의 역할을 수행하는 테스트 엔진 (TestEngine) 의 인터페이스를 가지고 있다.
- 각종 IDE 와의 연동을 보조하는 역할을 수행
- TestEngine API, Console Launcher, JUnit4 Based Runner 등을 포함하고 있다.
- JUnit Jupiter
- TestEngine API 의 구현체를 포함하고 있으며, JUnit5 에서 제공하는 Junpiter 기반의 테스트를 실행하기 위한 테스트 엔진을 가지고 있다.
- Jupiter Engine 을 포함하고 있다.
- Jupiter Engine은 Jupiter API 를 활용해 작성한 테스트 코드를 발견하고 실행하는 역할을 수행한다.
- JUnit Vintage
- JUnit 3, 4 버전에 대한 테스트 엔진 API 를 구현하고 있다.
- Vintage Engine 을 포함하고 있다.
[테스트 환경 설정]
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
maven 탭을 확인해보면, 아래와 같은 의존성을 가진 것을 확인할 수 있다.
spring-boot-starter-test 에서 제공하는 대표적인 라이브러리로는 아래 라이브러리가 있다.
- JUnit5
- 자바 애플리케이션의 단위 테스트를 지원
- Spring Test, Spring Boot test
- 스프링 부트 애플리케이션에 대한 유틸리티와 통합 테스트를 지원
- AssertJ
- 다양한 assert 문을 지원
- Mockito
- 자바 Mock 객체를 지원
- JSONassert
- JSON 용 assert 라이브러리
JUnit은 그 기능의 풍부함과 사용의 용이성 덕분에 Java 애플리케이션에서 단위 테스트를 작성할 때 가장 많이 사용되는 프레임워크이며, 특정 요구사항이나 선호에 따라 TestNG, Mockito, AssertJ, Spock 등 다른 프레임워크와 함께 사용되기도 한다. JUnit은 여전히 Java 테스트의 중심에 있으며, 많은 개발자들 사이에서 기본 선택지로 자리잡고 있다.
다음 포스팅에선, JUnit 테스트 코드를 작성하는 방법에 대해 알아보자.
[참고 도서]

<스프링 부트 핵심 가이드>
저자 : 장정우
출판사 : 위키북스
'Spring & Spring boot' 카테고리의 다른 글
[Springboot] 테스트 코드 - 5 - Mockito (0) | 2024.08.06 |
---|---|
[Springboot] 테스트 코드 - 4 - Assertion 단정문 (0) | 2024.08.06 |
[Springboot] 테스트 코드 - 2 - TDD 테스트 주도 개발이란? (0) | 2024.08.05 |
[Springboot] 테스트 코드 - 1 - 테스트 개요 (0) | 2024.08.04 |
[Springboot] springdoc 을 사용하여 Swagger 설정하기 - 2 (0) | 2024.08.04 |