JUnit이란?

심주흔·2023년 7월 3일
0
post-thumbnail

🍒 JUnit이란?

자바 언어를 위한 단위 테스트 프레임워크이다.

단위 테스트란?
작성한 코드가 의도대로 작동하는지 작은 단위(메서드)로 검증하는 것.

JUnit의 특징

  • 테스트 방식을 구분할 수 있는 애너테이션을 제공
  • @Test 애너테이션으로 메서드를 호출 할 때마다 새 인스턴스를 생성, 독립 테스트 가능
  • 예상 결과를 검증하는 어설션 메서드 제공
  • 사용법이 단순, 테스트 코드 작성 시간이 적음
  • 자동 실행, 자체 결과를 확인하고 즉각적인 피드백을 제공

파일 생성
[src -> test -> java] 폴더에 생성

테스트 파일 작성 후 5번 째 줄 ► 버튼으로 실행

체크 표시를 누르면 테스트 현황을 볼 수 있다.

한글이 깨지는 경우
[Setting - Build, Execution, Deployemnt - Gradle]에서 Bulid and run using과 Run tests using을 Gradle에서 IntelliJ IDEA로 바꾸면 됨.

🥥 자주 사용하는 JUnit 애너테이션

import org.junit.jupiter.api.*;

public class JUnitCycleTest {

    @BeforeAll
    static void beforeAll() {
        System.out.println("@BeforeAll");
    }

    @BeforeEach
    public void beforeEach() {
        System.out.println("@BeforeEach");
    }

    @Test
    public void test1() {
        System.out.println("test1");
    }

    @Test
    public void test2() {
        System.out.println("test2");
    }

    @Test
    public void test3() {
        System.out.println("test3");
    }

    @AfterAll
    static void afterAll() {
        System.out.println("@AfterAll");
    }

    @AfterEach
    public void afterEach() {
        System.out.println("@AfterEach");
    }

}

@Before

: 전체 테스트를 시작하기 전에 처음으로 한번만 실행. > static 선언
데이터베이스를 연결하거나 테스트 환경 초기화 등.

@BeforeEach

: 테스트 케이스를 시작하기 전에 매번 실행. > static (X)
테스트 메서드에서 사용하는 객체를 초기화하거나 테스트에 필요한 값을 미리 넣을 때 사용.

@AfterAll

: 전체 테스트를 마치고 종료하기 전에 한 번만 실행. > static 선언
데이터베이스 연결을 종료 할 때나 공통적으로 사용하는 자원을 해제할 때 사용.

@AfterEach

: 각 테스트 케이스를 종료하기전 매번 실행. > static (X)
테스트 이후에 특정 데이터를 삭제해야하는 경우

🍒 AssertJ?

: JUnit과 함께 사용해 검증문의 가독성을 높여줌

AssertJ를 사용하지 않아 잘 구분이 안되는 예시
Assertions.assertEquals(a + b, sum);

AssertJ를 사용한 예시
assertThat(a + b).isEqualTo(sum);
:이 경우 a와 b를 더한 값이 sum과 같아야 한다는 의미로 정확하게 읽힌다.

🥥 자주 사용하는 메서드

매서드 이름설명
isEqualTo(A)A 값과 같은지 검증
isNotEqualTo(A)A 값과 다른지 검증
contains(A)A 값을 포함하는지 검증
doesNotContains(A)A 값을 포함하지 않는지 검증
startsWith(A)접두사가 A인지 검증
endsWith(A)접미사가 A인징 검증
isEmpty()비어있는 값인지 검증
isNotEmpty()비어있지 않은 값인지 검증
isPositve()양수인지 검증
isNegative()음수인지 검증
isGreaterThan(1)1보다 큰 값인지 검증
isLessThan(1)1보다 작은 값인지 검증
profile
이봐... 해보기는 했어?

0개의 댓글