JUnit은 자바 언어에서 사용되는 대표적인 테스트 프레임워크로서 단위 테스트(+통합 테스트)를 위한 도구를 제공한다.
JUnit의 가장 큰 특징은 어노테이션 기반의 테스트 방식을 지원한다는 것이다. 즉, JUnit을 사용하면 몇 개의 어노테이션만으로 간편하게 테스트 코드를 작성할 수 있다. 또한 JUnit을 활용하면 단정문(assert)을 통해 테스트 케이스의 기댓값이 정상적으로 도출됐는지 검토할 수 있다는 장점이 있다.
참고로 JUnit 5 버전은 스프링 부트 2.2 버전부터 사용 가능하다.
JUnit 5는 크게 Jupiter, Platform, Vintage의 세 모듈로 구성된다.
JUnit Platform은 JVM에서 테스트를 시작하기 위한 뼈대 역할을 한다. 테스트를 발견하고 계획을 생성하는 *테스트 엔진(TestEngine)의 인터페이스를 가지고 있다.
테스트 엔진: 테스트를 발견하고 수행하며, 그 결과를 보고하는 역할을 수행한다. 또한 각종 IDE와의 연동을 보조한다. (IDE 콘솔 출력 등)
Platform에는 TestEngine API, Console Launcher, JUnit 4 Based Runner 등이 포함되어 있다.
테스트 엔진 API의 구현체를 포함하고 있으며, JUnit 5에서 제공하는 Jupiter 기반의 테스트를 실행하기 위한 테스트 엔진을 보유하고 있다.
테스트의 실제 구현체는 별도 모듈의 역할을 수행하는데, 그중 하나가 Jupiter Engine이다. Jupiter Engine은 Jupiter API를 활용해서 작성한 테스트 코드를 발견하고 실행하는 역할을 수행한다.
Junit 3, 4에 대한 테스트 엔진 API를 구현하고 있다. 기존에 작성된 JUnit 3,4 버전의 테스트 코드를 실행할 때 사용되며 Vintage Engine을 포함하고 있다.
이처럼 JUnit은 하나의 Platform 모듈을 기반으로 Jupiter와 Vintage 모듈이 구현체의 역할을 수행한다. JUnit의 구조를 간단하게 그림으로 표현하면 다음과 같다.
Tip Junit 5에 대한 자세한 내용은 아래의 사용자 가이드를 참고하자.