Delvelopment/Java

JUnit이란? JUnit5 (Assertion, 어노테이션)

제제킴 2022. 1. 14. 22:54
반응형

JUnit은 JAVA 프로그래밍 언어용 유닛 테스트 프레임워크이다. JUnit은 테스트 주도 개발을 위한 유닛 테스트 프레임워크이다.
테스트 결과를 텍스트로 남기는 것이 아니라 Test Class로 남기므로, 개발자에게 테스트 방법 및 클래스의 히스토리를 남길 수 있다.

JUnit4는 단일 Jar로 구성되었으나, JUnit5는 JUnit Platform, JUnit Jupiter, JUnit Vintage 모듈들로 구성되었다.
현재 JUnit 5.8.2 버전을 보면 크게 세가지 아래에 여러 모듈이 포함된걸 볼 수 있다. 모듈별 디스크립션은 https://junit.org/junit5/docs/current/api/index.html 참고하길 바란다.

(JUnit5 버전은 java8 부터 사용이 가능하다. https://junit.org/junit5/ )

https://junit.org/junit5/docs/current/user-guide/#overview


Assert 메서드

Assertions.java 를 참고하면 Assert 메서드를 확인할 수 있다. 다 설명할 수 없어서 몇가지만 나열하려고 한다.

  • assertArrayEquals(a, b)
    • 배열 A와 B가 일치함을 확인한다.
  • assertEquals(a, b)
    • 객체 A와 B가 같은 값을 가지는지 확인한다
  • assertEquals(a, b, c)
    • 객체 A와 B가 값이 일치함을 확인한다 ( a: 예상값, b:결과값, c: 오차범위)
  • assertSame(a, b)
    • 객체 A와 B가 같은 객체임을 확인한다
  • assertTrue(a)
    • 조건 A가 참인지 확인한다
  • assertNotNull(a)
    • 객체 A가 null이 아님을 확인한다

 


어노테이션

https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/package-summary.html

  • @AfterAll
    • 현재 테스트 클래스의 모든 테스트 후에 주석이 달린 메서드가 실행되어야 함을 알리는 데 사용됩니다 .
  • @AfterEach
    • 현재 테스트 클래스의  , , , 및 메서드 다음 에 주석이 달린 메서드가 실행되어야 함을 알리는 데 사용됩니다 . @Test@ RepeatedTest @ParameterizedTest @TestFactory @TestTemplate
  • @BeforeAll
    • 현재 테스트 클래스의 모든 테스트 전에 주석이 달린 메서드가 실행되어야 함을 알리는 데 사용됩니다 .
  • @BeforeEach
    • 현재 테스트 클래스의  , , , 및 메서드 보다 먼저 주석이 달린 메서드가 실행되어야 함을 알리는 데 사용됩니다 . @Test@RepeatedTest@ParameterizedTest@TestFactory@TestTemplate
  • @Disabled
    • 테스트 클래스 또는 테스트 메서드가 현재 비활성화 되어 실행되어서는 안 된다는 신호를 보내는 데 사용됩니다.
  • @DisplayName
    • 테스트 클래스 또는 테스트 메서드에 대한 사용자 지정 표시 이름 을 선언하는 데 사용됩니다
  • @DisplayNameGeneration
    • 테스트 클래스에 대한 사용자 지정 표시 이름 생성기를 선언하는 데 사용됩니다.
  • @IndicativeSentencesGeneration
    • DisplayNameGenerator.IndicativeSentences표시 이름 생성기를 등록하고 구성하는 데 사용됩니다
  • @Nested
    • 클래스가 둘러싸는 클래스 의 인스턴스와 설정 및 상태를 공유할 수 있는 중첩된 비정적 테스트 클래스(즉, 내부 클래스 )임을 알리는 데 사용 됩니다.
  • @Order
    • 필드, 메서드 또는 클래스가 동일한 범주의 다른 요소에 대해 평가되거나 실행되어야 하는 순서 를 구성하는 데 사용되는 주석입니다 .
  • @RepeatedTest
    • 지정된 횟수만큼 반복되어야 하는 테스트 템플릿 방법이라는 신호를 보내는 데 사용됩니다 .
  • @Tag
    • A는 반복 선언하는 데 사용되는 주석 태그 주석 테스트 클래스
  • @Tags
    • 하나 이상의 @Tag선언을 위한 컨테이너입니다 .
  • @Test
    • 테스트 방법 이라는 신호를 보내는 데 사용됩니다 .
  • @TestClassOrder
    • 테스트 클래스 ClassOrderer를 구성하는 데 사용되는 유형 수준 주석입니다 .@Nested
  • @TestFactory
    • 메서드가 테스트 팩토리 메서드 라는 신호를 보내는 데 사용됩니다 .
  • @TestInstance
    • 테스트 클래스 또는 테스트 인터페이스에 대한 테스트 인스턴스 의 수명 주기 를 구성하는 데 사용되는 유형 수준 주석입니다 .
  • @TestMethodOrder
    • 테스트 클래스 또는 테스트 인터페이스 MethodOrderer의 테스트 메서드 를 구성하는 데 사용되는 유형 수준 주석입니다 .
  • @TestTemplate
    • 주석이 달린 메서드가 테스트 템플릿 메서드 라는 신호를 보내는 데 사용됩니다 .
  • @Timeout
    • 한 클래스 및 해당 클래스 내에서 메서드 또는 모든 테스트 가능한 메서드에 대한 시간 초과를 정의하는 데 사용됩니다 @Nested.
반응형