JUnit 5 (1)
들어가기에 앞서
JUnit 5를 조사해야 할 일이 생겼다. 뭔가 조사하고 공부하려면 관련된 공식 문서를 간단하게 요약 번역 해보는 것이 좋지 않을까 해서, 가끔씩 관련 포스트를 올려보려 한다.
나는 영어를 못 하기 때문에 구글 번역기께서 많이 수고하실 예정.
JUnit 5
The new major version of the programmer-friendly testing framework for Java 8
개발자 친화적인 테스팅 프레임워크의 귀환
- 근 10년만의 메이저 업데이트
- JUnit 4 : 2005년 릴리즈
- JUnit 5 : 2017년 9월 10일 릴리즈
- 자바 8 -혹은 모던 자바- 지향
JUnit 5은
JUnit 5 is the next generation of JUnit.
-
모던 자바(자바 8, 또는 그 이상)를 타겟으로 한, 기존과는 완전히 다른 테스팅 스타일을 가지는 JUnit의 새로운 버전
-
모던 자바의 최신 기술(=람다, 스트림 등)을 활용 가능한, JVM 기반 테스팅의 토대를 구축
JUnit Lambda
- JUnit 5의 전신격 프로젝트
- 기존 JUnit 4의 오래된 구조에서 비롯한 여러 문제점을 해결하기 위한 JUnit의 근본적 혁신안
적폐청산
기존 JUnit 개선상의 난점
- 러너
Runner
는 JUnit이 사용되는 맥락을 확장할 수 있는 강력한 도구로 사용되었으나-SpringJUnit4ClassRunner
등-, 여러 개의 커스텀 러너를 조합하지 못하는 문제가 있음. - 동적으로 생성되는 테스트 케이스 -예를 들면, 자바 8의 스트림- 를 지원하지 않음.
- 대부분의 IDE에서 JUnit을 지원하여 테스트 실행이 편리하나, 역으로 IDE에서 JUnit의 핵심 부분을
매우 창의적으로활용하고 있어 JUnit의 수정이 대단히 어려워짐.
Project Lambda - The Vision
- 테스트 실행/기록 기능과 테스트 정의/환경 구성을 분리
- 주요 기능을 분리하여 JUnit의 구성요소를 단순화
- 다른 테스트 라이브러리와도 손쉽게 혼합 가능하게 될 것
- 개별 러너와 같은, 개별 테스트에서 정의하는 API가 아닌 JUnit 에 의존하는 테스트
- JUnit의 확장에 대한 재구성
- 기존 JUnit 구성 컴포넌트를 응집력 있는 방향으로 재설계
- 새로운, 모던 자바 -그러니까 자바 8- 에 최적화된 JUnit
- 모든 유형의 테스트 케이스, 그리고 테스트 케이스 작성의 모든 구간에서 JAVA 8의 기능을 활용 가능한 JUnit