자바 개발자가 가장 많이 사용하는 테스팅 프레임 워크
- 단위 테스트를 작성하는 93% 자바 개발자가 사용 중 (젯브레인 리포트 中)
- 자바 8이상을 필요로 함
- 대체제 : TestNG, Spock, 등등
- 세부 모듈을 가지고 있다.
- Platform : 테스트를 실행해주는 런처 제공. TestEngine API 제공
- Jupiter : TestEngine API의 구현체로 Junit 5를 제공
- Vintage : Junit 4와 3을 지원하는 TestEngine 구현제
- 스프링부트 2.2 이상을 사용할 경우
- 'org.springframework.boot:spring-boot-starter-test'을 의존성으로 가져올 경우 junit5버전을 디폴트로 가져옴
- 별다른 의존성을 추가하지 않아도 사용 가능
- 앞에 public을 붙이지 않아도 된다.
- junit 4는 public안에 public 메서드만 실행할 수 있었다
- 리플렉션을 사용하기 때문에
-
@BeforeAll
- 테스트 클래스 안에 있는 여러 테스트가 모두 실행하기 전에 딱 한 번 호출이 된다.
- 반드시 static 메서드를 사용해야한다. private(x) defalut(o) 리턴타입(x)
-
@AfterAll
- 모든 테스트 실행 이후 한번만 호출된다.
- 반드시 static 메서드를 사용해야한다.
-
@BeforeEach
- 모든 테스트를 실행하기 이전에 한 번 실행된다.
- 스태틱일 필요는 없다.
-
@AfterEach
- 모든 테스트를 실행하기 이후에 한 번 실행된다.
- 스태틱일 필요는 없다.
- 람다 서플라이어
-
assertTimeout
-
assertTimeoutPreemptively
-
assertThat
-
Tag
- 테스트마다 Tag 설정 가능 & 인텔리제이에서 특정 tag만 실행 가능
-
커스텀 태그
- 커스텀 어노테이션을 사용할 경우 <-> 기존의 @TAG("fast")는 타입 세이프하지 않다. fasd, fadt 등 오타가 날 수 있다.
-
RepeatedTest (테스트 반복)
-
ParameterizedTest, ValueSource (테스트 반복)
- 파라미터 테스트 (파라미터 갯수만큼 테스트)
-
EmptySource & NullSource
-
Converter (테스트 반복)
-
복수 인자 (테스트 반복)
- 커스텀한 타입(Study)을 여러개 받고 싶을 때
- [#1] : 타입 변수 인자로 받아옴