freeParksey
밥세공기
freeParksey
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • JAVA (32)
      • 자바스터디 (21)
      • Java in action (6)
      • OOP (1)
      • test (2)
    • 알고리즘 문제 (51)
      • 백준 (49)
    • C (Atmega128) (7)
    • 인공지능 (11)
    • 운영체제 (8)
    • 디자인패턴 (5)
    • 잡다한것 (2)
    • 사용기 (3)
      • 도커 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 알고리즘
  • 상속
  • 집합과 맵
  • 분류
  • java
  • 딥러닝
  • 백트래킹
  • 재귀기초
  • 후기
  • 우테코
  • 운영체제
  • Iterator
  • 우아한테크코스
  • 자바스터디
  • 동적계획법
  • 백준
  • 프리코스
  • 그리드
  • Thread #JVM #자바스터디 #
  • Thread 동작
  • 백트랙킹
  • dto 변환 위치
  • 3주차
  • Python
  • dto 변환
  • 스트림
  • 동작 파라미터화
  • 자바
  • Collection
  • generic

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
freeParksey

밥세공기

JUnit5
JAVA

JUnit5

2022. 8. 7. 23:40

JUnit이란?


Java 단위 테스트 프레임워크이다.

 

테스트를 할때 한번에 많은 것을 몰아서 테스트하게 된다면 수행 과정도 복잡하고 오류 발생시 원인을 찾기도 힘들어진다.

따라서 테스트를 가능한 작은 단위로 쪼개서 확인하는 것을 단위 테스트라 한다.

 

 

다른 테스트 프레임 워크

다른 언어에도 여러 단위 테스트 프레임 워크가 있다. 이를 xUnit이라하며 켄트 벡이라는 분이 만드셨다.
CppUnit, NUnit, unitest

 

 

왜 단위 테스트를 할까?

실제로 저는 Java를 최근에 접하고 Spring을 아예 모르는 상태에서 막연히 프로젝트를 하고 싶은 생각에 하게되었습니다.

프로젝트를 진행하는 도중 제가 실행한 값에 대해 제대로 동작하는지 확인을 하고자 하면 항상 화면에 보여주기 위해 데이터를 sysout으로 출력을 하거나 타임리프로 화면에 띄우고 메서드를 추가해서 확인하고 그랬었고 하나 테스트 할때마다 많은 시간이 걸렸다.

 

 

JUnit5


JUnit5는 이전 JUnit 3,4와 다르게 3개의 모듈화가 되어있다.

JUnit 4는 하나의 jar파일로 라이브러리를 불러와 사용했다.

 

 

JUnit5 구조

Jupiter, Vintage, JUnit Platform으로 구성

 

  • Jupiter : JUnit5를 지원하는 TestEngine API 구현체
  • Vintage: Junit3,4를 지원하는 TestEngine API 구현체, 즉 하위 호환을 위해 제공
  • JUnit Platform: 테스트를 실행해주는 런처 제공, TestEngine API 제공

 

JUnit Platform을 통해서 launcher가 실행이 되면 각각의 엔진 구현체를 통해 테스트가 진행된다.

이때 Jupyter는 JUnit5를, Vintage는 JUnit3,4를 지원하는데 test 코드 작성시 혼동하여 작성하는 것을 유의하자.

 

 

JUnit5 의존성 추가


사용할 엔진 아래 둘 중 선택

JUnit5 - Jupyter Engine

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

JUnit5 - Vintage Engine

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

 

JUnit5

JUnit 래퍼런스에 해당 클래스는 public이 필요하지 않지만, private으로 해서는 안된다 나와있습니다.

 

유의 사항


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

 

JUnit 5 User Guide

Although the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and custo

junit.org

해당 래퍼런스를 통해 실습하였는데

 

 

assertEquals를 import하지 못하는 경우가 있어서 추가로 찾아보니

static메소드에 있는 것을 확인했습니다. 따라서 아래를 import 해주어야합니다.

import static org.junit.jupiter.api.Assertions.*;

 

 

또한 jupiters의 params또한 import를 하기 위해서는 dependency를 추가해줘야합니다.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-params</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

 

'JAVA' 카테고리의 다른 글

[JAVA] 로그 (LOG)  (0) 2022.08.10
    'JAVA' 카테고리의 다른 글
    • [JAVA] 로그 (LOG)
    freeParksey
    freeParksey
    Github: https://github.com/parksey

    티스토리툴바