[Java] JUnit5

2020. 12. 5. 04:32·Java&Spring/STUDY HALLE

1.JUnit은 무엇인가?

JUnit은 자바 개발자가 가장 많이 사용하는 테스트 프레임워크이다.
JUnit5는 4에서 5로 넘어오면서 여러개의 서브모듈로 나뉘었다 중요한 것들만 살펴보자면 다음과 같다.

  • Junit Platform
    • junit 테스트를 진행하기 위한 TestEngine API을 제공한다.
  • Junit Jupiter
    • JUnit5의 TestEngine API의 구현체
  • Junit Vintage
    • JUnit3과 JUnit4의 TestEngine API 구현체

2.Junit은 어떻게 사용하는가?

다음과 같이 IntelliJ 에서 gradle 기반으로 프로젝트를 생성하면 자동으로 JUnit4가 의존성 추가가 된다.
우리가 사용할 JUnit은 5 버전이기 때문에 MVNRepository를 접속해서 최신 안정화된 JUnit5버전을 찾아 해당 위치에 의존성을 추가한다.

MVN Repository에서 해당 gradle을 찾는다.
다음과 같이 build.gradle을 작성하면 Junit5를 실행할 수 있다.

예제

class AppTest {

    @BeforeAll
    static void testBeforeAll() {
        System.out.println("before all");
    }


    @AfterAll
    static void testAfterAll() {
        System.out.println("after all");
    }


    @BeforeEach
    void testBeforeEach() {
        System.out.println("before each");
    }


    @AfterEach
    void testAfterEach() {
        System.out.println("after each");
    }

    @Test
    @DisplayName("테스트1")
    void testName1() {
        assertArrayEquals(new int[]{1, 2, 3, 4, 5}, new int[]{1, 2, 3, 4, 5});
    }

    @Test
    @DisplayName("테스트2")
    void testName2() {
        System.out.println("22222222");
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);

        List<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);
        list2.add(3);
        assertIterableEquals(list1, list2);
    }

    @Test
    void testName3() {
        assertAll(
            () -> assertEquals(3, 3,"3 이 아닙니다."),
            () -> assertEquals("3", "3"),
            () -> assertTrue(true)
        );
        System.out.println("33333333");
    }

    @Test
    void testName4() {
        int[] arr = new int[10];
        assertThrows(
            IndexOutOfBoundsException.class,
            () -> {
                int a = arr[9];
            },
            ()-> {
                System.out.println("에러발생");
                return "this is error";
            }
            );
        System.out.println("44444444");
    }
}

3.JUnit5 기본 문법

@Test

  • 해당 메소드를 테스트케이스에 포함시킨다는 의미이다.

@BeforeAll

  • 모든 테스트 케이스가 실행 되기 전에 실행되는 메소드이다.
  • static 제어자를 붙여야 사용할 수 있다.

@AfterAll

  • 모든 테스트 케이스가 실행 된 후에 실행되는 메소드이다.
  • static 제어자를 붙여야 사용할 수 있다.

@BeforeEach

  • 각각의 테스트 케이스가 실행 되기 전에 실행되는 메소드이다.

@AfterEach

  • 각각의 테스트 케이스가 실행 된 후에 실행되는 메소드이다.

@DisplayName

  • 내가 원하는 테스트의 이름을 지어줄 수 있다.

4.JUnit5 Assertions

다양한 assertions가 있지만 해당 메소드만 있어도 대부분의 테스트를 완료 할 수 있다.

assertEquals(expected, actual)

  • 기대한 값이 실제 값과 일치하는지 확인한다.

assertArrayEquals(expected, actual)

  • 기대한 배열의 값이 실제 배열의 값과 일치하는지 확인한다.

assertIterableEquals(expected, actual)

  • 기대한 iterable 자료구조의 값이 실제 iterable 자료구조의 값과 일치하는지 확인한다.

assertNotNull(actual)

  • 기대한 값이 null이 아닌지 확인한다.

assertTrue(boolean)

  • 기대한 값이 참인지 확인한다.

assertAll(executable...)

  • 여러개의 케이스를 하나로 묶어 테스트 하는데 사용한다.

assertThrows(expectedType, executable)

  • 기대한 예외를 던지는지 확인한다.

해당 테스트 assert의 마지막 파라미터로 String 값을 대입하면 해당 테스트 에러 발생시 대입한 String값이 출력된다.
비슷하게 assert의 마지막 파라미터로 executable한 것을 대입하면 해당 테스트 에러 발생 시 작성한 문장이 실행된다.

저작자표시 비영리 변경금지 (새창열림)

'Java&Spring > STUDY HALLE' 카테고리의 다른 글

[Java] 선형 자료구조  (0) 2020.12.07
[Java] GitHub Library 사용법  (0) 2020.12.06
[Java] 제어문  (0) 2020.12.05
[Java] 연산자  (1) 2020.11.27
[Java] 데이터타입, 변수, 배열  (0) 2020.11.21
'Java&Spring/STUDY HALLE' 카테고리의 다른 글
  • [Java] 선형 자료구조
  • [Java] GitHub Library 사용법
  • [Java] 제어문
  • [Java] 연산자
무토(MUTO)
무토(MUTO)
무식하게 공부하자. 토 나올 때 까지.
  • 무토(MUTO)
    MUTO 와 함께 개발을
    무토(MUTO)
  • 전체
    오늘
    어제
    • 분류 전체보기 (32)
      • 우아한유스방 (0)
      • Node (1)
      • 알고리즘 (3)
      • Java&Spring (21)
        • STUDY HALLE (15)
        • 차세대를 하면서... (2)
        • Java (2)
        • Spring (2)
      • 실패록 (5)
        • 오늘의 실패록 (2)
        • 회고록 (3)
      • 책읽기 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    jvm
    이진트리
    선형자료구조
    bytecode
    Comparable
    study halle
    junit5
    자바
    java error
    이진탐색트리
    enum
    유닛테스트
    조영호
    @RequestMapping
    operator
    comparator
    java8
    오브젝트
    백준
    더블 디스패치
    취준생
    객체지향
    Java Exception
    intellij
    415
    github
    whiteship
    Java
    실패록
    연결리스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
무토(MUTO)
[Java] JUnit5
상단으로

티스토리툴바