: 프로그램의 최소 단위(메서드/클래스)의 동작을 검증하는 테스트
Java에서 가장 널리 쓰이는 단위 테스트 프레임워크입니다.
Maven 예시
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
```
Gradle 예시
```groovy
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
```
| 어노테이션 | 설명 |
|---|---|
@Test | 테스트 메서드 표시 |
@BeforeEach | 각 테스트 실행 전 수행 |
@AfterEach | 각 테스트 실행 후 수행 |
@BeforeAll | 모든 테스트 시작 전 1회 수행 (static) |
@AfterAll | 모든 테스트 종료 후 1회 수행 (static) |
@DisplayName | 테스트 이름 지정 |
@Disabled | 테스트 비활성화 |
JUnit에서는 검증을 위해 다양한 assert 메서드를 제공합니다.
| 메서드 | 설명 |
|---|---|
assertEquals(expected, actual) | 기대값과 실제값이 같은지 검증 |
assertTrue(condition) | 조건이 true인지 검증 |
assertFalse(condition) | 조건이 false인지 검증 |
assertNotNull(object) | 객체가 null이 아닌지 검증 |
assertThrows() | 예외 발생 검증 |
```java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
public int divide(int a, int b) {
if (b == 0) throw new IllegalArgumentException("0으로 나눌 수 없습니다.");
return a / b;
}
}
```
CalculatorTest.java
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
Calculator calc;
@BeforeEach
void setUp() {
calc = new Calculator();
}
@Test
@DisplayName("덧셈 테스트")
void testAdd() {
assertEquals(5, calc.add(2, 3));
}
@Test
@DisplayName("뺄셈 테스트")
void testSubtract() {
assertEquals(1, calc.subtract(3, 2));
}
@Test
@DisplayName("0으로 나누면 예외 발생")
void testDivideByZero() {
assertThrows(IllegalArgumentException.class, () -> calc.divide(10, 0));
}
@Test
@DisplayName("나눗셈 테스트")
void testDivide() {
assertEquals(2, calc.divide(10, 5));
}
}
IDE 실행
Gradle 실행
./gradlew test
Maven 실행
mvn test