본문 바로가기
Delvelopment/Java

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

by 제제킴 2022. 1. 14.
반응형

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.
반응형

댓글