JUnit5
- 2017년 10월에 공개됨
- 스프링부트 2.2부터 Junit5가 기본버전이 됨
JUnit5 구조
Junit 구조
- Platform : 테스트를 실행해주는 런처를 제공 / TestEngine API 제공
- Jupiter : TestEngine API 구현체로 JUnit 5를 제공
- Vintage: Junit4와 3을 지원하는 TestEngine 구현체
JUnit5 기본 어노테이션
어노테이션 |
기능 |
@Test |
테스트 메소드 설정 |
@BeforeAll |
현재 클래스 테스트 실행전 해당 테스트 실행 |
@BeforeEach |
모든 테스트 실행전에 실행할 메소드 정의 |
@AfterAll |
현재 클래스 테스트 종료후 해당 테스트 실행 |
@AfterEach |
모든 테스트 실행후에 실행할 메소드 정의 |
@Disabled |
미사용 테스트 정의 |
JUnit5 테스트 이름 관련 어노테이션
어노테이션 |
기능 |
@DisplayNameGeneration |
Method와 Class 레퍼런스를 사용하여 테스트 이름 표기 방식 설정 (기본구현체로 ReplaceUnderscores 제공) |
@DisplayName |
테스트 이름을 쉽게 표현할 수 있게 제공하는 어노테이션 (@DisplayNameGeneration보다 우선순위가 높음) |
JUnit 조건 테스트 실행 어노테이션
Enabled, Disabled 어노테이션은 아래와 같이 구성
- OnOS : OS 버전
- OnJre : JRE 버전
- IfSystemProperty : 시스템프로퍼티
- IfEnvironmentVariable : 환경변수
어노테이션 |
기능 |
@Enabled |
조건에 따라서 테스트 실행 |
@Disabled |
조건에 따라서 테스트 미실행 |
JUnit 테스트 반복실행 어노테이션
어노테이션 |
기능 |
@RepeatedTest |
반복 횟수와 반복테스트 이름을 설정할 수 있음
|
@ParameterizedTest |
테스트에 여러 다른 매개변수를 대입해가며 반복 실행 |
- RepetitionInfo : RepeatedTest실행시 해당 타입의 매개변수 인자로 받아서 사용이 가능 (현재횟수, 총반복횟수확인 가능)
JUnit 테스트 인스턴스 설정 어노테이션
JUnit은 테스트 메소드 마다 테스트 인스턴스를 새로 만듬 (기본전략으로 설정되어 있고, 테스트간의 의존성을 없애기 위함, 의존성이 생기면 테스트가 불안정해지기 때문임)
어노테이션 |
기능 |
@TestInstance(Lifecycle.PER_CLASS) |
테스트 클래스당 인스턴스를 하나만 만들어서 사용 @BeforeAll / @AfterAll 메소드를 static 메소드가 아닌 기본메소드로 정의가 가능해짐 |
JUnit 테스트 순서 설정 어노테이션
어노테이션 |
기능 |
@TestMethodOrder |
테스트 순서를 정의해서 설정하게 해줌 |
- 기본구현체로는 Alphanumeric, OrderAnnotation, Random이 있음
- OrderAnnotation 설정시, 메소드에 Order어노테이션으로 우선순위 입력하여 테스트 순서 정의함