JUnit5 개요
JUnit이란?
JUnit이란 java의 단위테스트를 위한 프레임워크를 말한다.객체의 인스턴스를 생성하여 로직 수행후 결과값이 기대값과 일치하는지 비교하거나 파일이나 네트워크 상의 연결이나 데이터베이스 연동 테스트 등을 수행할 수 있다.
assert관련 메소드를 제공하는데 실제 Junit에서 테스트시 참거짓 혹은 null 혹은 같은 객체인지등을 검사하는 메소드를 제공한다.
기본적으로는 Test 어노테이션을 제공해서 테스트할 메소드를 지정하고, Before나 after를 지정해서 테스트 전후 실행될 동작들을 지정하기도 한다.
JUnit은 Java를 위한 오픈 소스 테스트 프레임워크로 “디자인 패턴(Design Patters)“을 저술한 GoF의 일원인 Erich Gamma와 XP로 유명한 Kent Beck이 함께 개발하였다. JUnit은 자신이 의도하는 바를 코드에 간단히 표현할 수 있는 방법을 제공하여, 이를 이용해 코드가 원하는 대로 동작하는지를 검증할 수 있다. 원래 JUnit은 IDE와 개발 도구 환경과는 별도로 사용될 수 있는 테스트 프레임워크로 콘솔 환경에서 커맨드 라인으로 실행할 수 있고, GUI 환경에서 사용할 수도 있다.
단위 테스트와 기능 테스트
단위 테스트
단위 테스트(unit test)는 프로그램의 기본 단위가 내부 설계 명세에 맞게 제대로 동작하는지를 테스트하는 것이다. Java에서는 기본 단위가 클래스이므로 각 클래스에 포함된 메서드가 제대로 동작하는지를 테스트하면 된다. 따라서 단위 테스트는 범위가 매우 한정된다.
기능 테스트
기능 테스트(funcinal test)는 소프트웨어 전체가 제대로 동작하는지를 확인하는 테스트다. 전체 소프트웨어 시스템을 하나의 블랙박스로 보고 사용자의 입장에서 각 기능이 제대로 동작하는지를 테스트하는 것이다. 기능 테스트는 보토 별도의 테스트 팀이 수행하며, 개발할 때와는 다른 별도의 도구와 기술을 사용한다.
JUnit 5 지원
- JUnit 4
- Java 1.4 이상
- JUnit 5
- JUnit 5는 1.8 이상
JUnit5 구성
JUnit4의 구성은 All in One 이었지만, JUnit5의 구성은 세부화(Platform + Jupiter + Vintage) 되었다.
- 테스트 프레임워크를 실행하기 위한 기초 모듈
- JUnit Platform : JUnit Platform은 JVM에서 테스트 프레임워크를 실행하기 위한 기초적인 역할을 한다. 또한 테스트 개발을 위한 API를 제공한다.
- 구체적인 테스트 프레임워크 모듈
- JUnit Jupiter : JUnit5 테스트 및 Extension을 만들기 위한 새로운 프로그래밍 모델과 확장 모델의 조합 TestEngine을 제공한다.
- JUnit Vintage : 하위 호환성을 위해 Junit4, Junit3을 실행할 수 TestEngine이다.