JUnit이란?
JUnit4 Test Annotation
Spring Test Annotation(JUnit4)
JUnit4와 JUnit5 비교
- 테스트 클래스 내에서 메서드의 실행 순서를 선택할 수 있다.
- @Rule annotation은 테스트 케이스에 특정 규칙을 적용하는 데 동무이 되는 TestRule 클래스에서 확장된다.
- 예 : 테스트 케이스 실행 전 임시 폴더 생성 및 실행 후 폴더 삭제는 Rule을 통해 설정할 수 있다.
- @Rule은 JUnit 5 Vintage에서 사용할 수 있는 JUnit 4에서만 사용할 수 있지만 @ExtendWith는 JUnit 5에 더 가까운 기능을 제공한다.
마찬가지로 @Rule을 사용하여 글로벌 타임 아웃을 설정할 수 있다.
- JUnit5 에서만 지원되며 동적 또는 런타임 테스트 생성에 도움이 된다.
- 데이터 스트림을 컬렉션으로 반환하며 수명주기 콜백 주석을 사용할 수 없다.
- JUnit Jupiter에서만 지원된다.
- 중첩 된 테스트 케이스를 생성하는 데 도움이 된다.
ex) 테스트 케이스 1번이 있는 클래스 1번에는 테스트 케이스 2번이 있는 @Nested 클래스 2번이 있을 수 있다.
이렇게 하면 테스트 케이스 1에 대한 중첩 테스트 케이스가 된다. 따라서 테스트 케이스 1번이 실행 된 다음 테스트 케이스 2번이 실행된다.
- @Nested 주석을 사용하지 않으면 중첩 된 클래스가 실행되지 않는다.
- 테스트에 태그를 지정하고 필터링하는 데 도움이 된다.
- 실행할 테스트를 포함하거나 해당 카테고리에 따라 필터링하여 제외 할 수 있다.
- 테스트 데이터 변형이 있는 메서드를 여러 번 실행하는 데 사용된다.
- JUnit4는 @RunWith 및 @Parameters를 지원하는 반면 JUnit5 Jupiter는 @ValueSource와 함께 @ParamaterizedTest를 지원한다.
- JUnit5는 @RepeatedTest 주석을 사용하여 일정 횟수 동안 테스트 메서드의 반복 시행을 지원한다.
- 사용자 정의 이름을 표시 목적으로 테스트 메서드 또는 클래스에 지정할 수 있다.
- JUnit5는 테스트 라이프 사이클 구성을 지원합니다.
- JUnit4와 5는 모두 기본 메서드 라이프 사이클 콜백을 따르며 클래스 별 구성도 수행 할 수 있다.