JAVA

[JAVA] Junit5

집한구석 2021. 10. 13. 23:07
728x90

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어노테이션으로 우선순위 입력하여 테스트 순서 정의함

 

'JAVA' 카테고리의 다른 글

[JAVA] 전략패턴  (0) 2021.11.29
[JAVA] TreeMap  (0) 2021.11.08
[JAVA] DBCP (DB Connection Pool)  (0) 2021.07.18
[JAVA] Stack / Deque  (0) 2021.07.16
[JAVA] e.printStackTrace() 사용하지 말아야하는 이유  (3) 2021.07.04