Java

JUnit

iksadnorth 2023. 7. 30. 21:31

👣 개요

Application의 품질을 높이기 위해 Test Code를 작성해야 한다.
여러 가지 상황들에 대한 검증을 서비스 운영 시점이 아닌
코드 작성 시기로 앞당기는 것이라 여길 수 있다.

JUnit은 Java용 단위 테스트 프레임워크다. 
JUnit을 통해 부분적으로 동작을 확인하고 문제를 파악할 수 있다.

👣 특징

간단한 사용법
JUnit은 간단한 API를 제공하여 테스트를 작성하고 실행하는 것이 쉽다.

자동화
테스트를 자동으로 실행하고 결과를 확인할 수 있으므로, 개발자의 수동 노력을 최소화한다.

테스트 그룹화
테스트를 그룹화하여 특정 부분만 테스트하거나 전체 테스트를 실행할 수 있다.

테스트 실행 순서
JUnit은 테스트 메서드의 실행 순서를 보장하지 않는다.
이는 테스트가 독립적으로 실행되도록 보장하여 안정성을 높일 수 있다.

 

👣 기본 구조

@DisplayName("[Calculator] 계산기 테스트")
public class CalculatorTest {
    private final Calculator calculator = new Calculator();

    @Test
    @DisplayName("[정상 테스트] 덧셈 테스트")
    public void testAdd() {
        // given
        int a = 2;
        int b = 3;
        
        // when
        int result = calculator.add(a, b);
        
        // then
        assertEquals(5, result); // 2 + 3 = 5
    }

    @Test
    @DisplayName("[정상 테스트] 뺄셈 테스트")
    public void testSubtract() {
        // given
        int a = 5;
        int b = 3;
        
        // when
        int result = calculator.subtract(a, b);
        
        // then
        assertEquals(2, result); // 5 - 3 = 2
    }
}

 

👣 기본 Annotation

@Test
테스트 메서드를 정의할 때 사용합니다. 해당 메서드가 단위 테스트를 수행하는 메서드임을 표시합니다.

@BeforeEach
테스트 메서드가 실행되기 전에 실행되는 메서드를 정의할 때 사용합니다.
이 어노테이션이 붙은 메서드는 매 Test Method 마다 실행된다.

@AfterEach
테스트 메서드가 실행된 후에 실행되는 메서드를 정의할 때 사용합니다.
이 어노테이션이 붙은 메서드는 매 Test Method 마다 실행된다.

@BeforeAll
테스트 클래스 내의 모든 테스트 메서드 실행 전에 딱 한 번 실행되는 정적 메서드를 정의할 때 사용합니다.

@AfterAll
테스트 클래스 내의 모든 테스트 메서드 실행 후에 딱 한 번 실행되는 정적 메서드를 정의할 때 사용합니다.

 

👣 Test 실행 방법 - gradle 기준

프로젝트 내의 전체 테스트 코드 실행

./gradlew test

 

특정 경로 아래의 테스트만 실행

./gradlew test --tests com.example.package.*

 

특정 클래스의 테스트만 실행

./gradlew test --tests com.example.MyTestClass

 

특정 메서드의 테스트만 실행

./gradlew test --tests com.example.MyTestClass.myTestMethod

'Java' 카테고리의 다른 글

Effective Java - 1회독 요약  (0) 2023.08.15
Effective Java - 책 읽기 전략  (0) 2023.08.15
Thread in Java  (0) 2023.07.17
Auto Boxing & Auto UnBoxing  (0) 2023.07.17
문자열  (0) 2023.07.17