JUnit5 개념 및 사용방법

최연재·2022년 11월 9일
0

기술스터디

목록 보기
1/3
post-thumbnail
    1. JUnit5 개념
    1. JUnit5 어노테이션 종류
    1. JUnit5 테스트 라이프 사이클
    1. Assert 메서드
    1. 보조 어노테이션
    1. JUnit5 Assumption

1. JUnit5 개념

  • JUnit5란 자바 개발자가 가장 많이 사용하는 테스팅 기반 프레임워크이다.
  • Java8 부터 사용가능
  • JUnit Platform, JUnit Jupiter, JUnit Vintage가 결합한 형태
    1. JUnit Platfor : 테스트를 실행해주는 런쳐와 TestEngine API를 제공
    2. Jupiter : TestEngine API 구현체로 JUnit5에서 제공
    3. Vintage : TestEngine API 구현체로 JUnit3, 4에서 제공

2. JUnit5 어노테이션 종류

JUnit5 어노테이션내용JUnit4 어노테이션
@Test테스트 Method임을 선엄함@Test
@ParameterizedTest매개변수를 받는 테스트를 작성할 수 있음.
@RepeatedTest반복되는 테스트를 작성할 수 있음.
@TestFactory@Test로 선언된 정적 테스트가 아닌 동적으로 테스트를 사용함.
@TestInstance테스트 클래스의 생명주기를 설정함.
@@TestTemplate공급자에 의해 여러 번 호출될 수 있도록 설계된 테스트 케이스 템플릿임을 나타냄
@TestMethodOrder테스트 메소드 실생 순서를 구성하는데 사용함
@DisplayName테스트 클래스 또는 메소드의 사용자 정의 이름을 선언할 때 사용함
@DisplayNameGeneration이름 생성기를 선엄함. 예를 들어 '_'를 공백 문자로 치환해주는 생성기가 있음(new_test->new test)
@BeforeEach모든 테스트 실행 전에 실행할 테스트에 사용함.@Before
@AfterEach모든 테스트 실행 후에 실행할 테스트에 사용함.@After
@BeforeAll현재 클래스를 실행하기 전에 제일 먼저 실행할 테스트를 작성하는데 사용함. static으로 선언@BeforeClass
@AfterAll현재 클래스 종료 후 해당 테스트를 실행함. static으로 선언@AfterClass
@Nested클래스를 정적이 아닌 중첩 테스트 클래스임을 나타냄
@Tag클래스 또는 메소드 레벨에서 태그를 선언할 때 사용. 메이븐을 사용할 경우 설정에서 테스트를 태그를 인식해 포함하거나 제외시킬 수 있음.
@Disabled클래스나 테스트를 사용하지 않음을 표시@Ignore
@Timeout테스트 실행 시간을 선언한 후 초과되면 실패하도록 설정
@ExtendWith확장을 선언적으로 등록할 때 사용
@RegisterExtension필드를 통해 프로그래밍 방식으로 확장을 등록할 때 사용
@TempDir필드 주입 또는 매개변수 주입을 통해 임시 디렉토리를 제공하는데 사용

3. JUnit5 테스트 라이프 사이클

하나의 테스트 클래스에서 아래와 같이 어노테이션을 설정하여 테스트 라이프 사이클을 만들 수 있다.

[Example1]

[Example2]

4. Assert 메서드

1. 기본

  • assertEquals()

2. 그룹

  • 여러 검증을 하나로 묶어서 테스트하는 것
  • assertAll()

3. 예외처리

  • 실행한 코드에서 특정 인셉션이 발생하는지 확인할 때 사용
  • assertThrows()

4. 시간초과

  • 특정 시간 안에 실행이 끝나는지 확인하고 싶을 때 사용
  • assertTimeout(), assertTimeoutPreemptively()

5. 보조 어노테이션

1. @DisplayName

  • 테스트 클래스나 메서드의 표시 이름을 지정

2. @Disabled

  • 테스트 실행 대상에서 제외

6. JUnit5 Assumption

  • 특정 환경에 있을 때만 테스트를 진행하도록 할 때 사용

이 글은 아래의 사이트 내용을 참고하였습니다.
\to https://steady-coding.tistory.com/349
\to https://insight-bgh.tistory.com/507
\to https://velog.io/@ehddek/JUnit-%EC%9D%B4%EB%9E%80
\to https://javacan.tistory.com/entry/JUnit-5-Intro
\to https://gaemi606.tistory.com/entry/JUnit5-Test-LifeCycle
\to https://beststar-1.tistory.com/28

profile
가보자고

0개의 댓글