👣 개요
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 |