| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 정규식
- javascript
- 문자열
- CSS
- 이클립스
- list
- HashMap
- java테스트
- json
- math
- ArrayList
- 테스트자동화
- Eclipse
- string
- 단위테스트
- html
- js
- 자바
- Array
- vscode
- 자바스크립트
- 인텔리제이
- 자바문법
- Visual Studio Code
- junit
- 배열
- input
- Java
- junit5
- IntelliJ
- Today
- Total
어제 오늘 내일
[JUnit] assertEquals() – 예상 값과 실제 값 비교 본문
1. assertEquals() 메소드
assertEquals() 메소드는 JUnit에서 가장 기본적으로 사용되는 단정(Assertion) 메소드이며, 테스트 결과가 예상값(expected)과 실제값(actual)이 동일한지를 비교하는 기능을 제공합니다.
단위 테스트에서 특정 메소드의 동작이 올바르게 수행되었는지 검증할 때 필수적으로 사용합니다.
JUnit5 기준 assertEquals() 메소드의 대표적인 정의는 다음과 같습니다.
assertEquals(expected, actual);
assertEquals(expected, actual, message);
- expected: 테스트에서 기대하는 값
- actual: 실제 실행 결과
- message: 비교 실패 시 출력할 설명 메시지(선택)
2. 기본적인 assertEquals() 사용 예제
가장 단순한 형태로 숫자 계산 결과를 검증하는 예제입니다.
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
public class CalculatorTest {
@Test
void testAddition() {
int result = 2 + 3;
assertEquals(5, result);
}
}
코드 설명
- result에는 실제 계산된 값 5가 저장됩니다.
- assertEquals(5, result)는 예상값 5와 실제값이 일치하는지 확인합니다.
- 값이 같으면 테스트가 성공하며, 다르면 AssertionError가 발생합니다.
3. 메시지를 포함한 assertEquals() 사용 예제
테스트가 실패했을 때 어떤 문제인지 명확히 알 수 있도록 메시지를 추가할 수 있습니다.
@Test
void testMultiplication() {
int result = 3 * 3;
assertEquals(10, result, "3 * 3의 계산 결과가 예상과 다릅니다.");
}
코드 설명
- 실제 계산 결과는 9이지만 예상값을 10으로 지정하여 의도적으로 실패하는 테스트입니다.
- 실패 시 "3 * 3의 계산 결과가 예상과 다릅니다."라는 메시지가 출력되어 디버깅 시 도움을 줍니다.
4. 문자열 비교에 사용되는 assertEquals()
문자열은 대소문자가 엄격하게 구분되므로 정확한 비교가 필요합니다.
@Test
void testStringCompare() {
String text = "Hello JUnit";
assertEquals("Hello JUnit", text);
}
코드 설명
- 문자열 비교에 있어 assertEquals()는 동일 여부를 정확히 판단합니다.
- "Hello JUnit"과 "hello junit"처럼 대소문자 차이가 있으면 테스트는 실패합니다.
5. 객체 비교에 사용되는 assertEquals() – equals() 재정의 필요성
객체 비교 시 assertEquals() 메소드는 객체의 equals() 메소드를 사용하여 동등성을 판단합니다.
따라서 객체가 동일한 값을 갖고 있어도 equals()가 재정의되지 않았다면 비교에 실패합니다.
class User {
String name;
User(String name) {
this.name = name;
}
}
@Test
void testUserObject() {
User u1 = new User("Tom");
User u2 = new User("Tom");
assertEquals(u1, u2); // equals()를 재정의하지 않았기 때문에 실패합니다.
}
코드 설명
- 동일한 값을 가진 두 객체를 생성했지만 equals()가 재정의되지 않아 서로 다른 객체로 판단됩니다.
- 객체 비교를 위해서는 equals()와 hashCode()를 재정의해야 합니다.
6. assertEquals() 사용 시 주의할 점
6.1 expected와 actual 순서
assertEquals(expected, actual) 순서를 반드시 지켜야 합니다.
순서를 반대로 써도 동작하지만, 테스트 실패 메시지가 직관적이지 않아 디버깅이 어려워집니다.
6.2 null 비교 시 대안 존재
null 확인을 위해 assertEquals(null, value)를 사용할 수 있지만,
의도를 더 명확히 하기 위해 assertNull() 또는 assertNotNull()을 사용하는 것이 좋습니다.
7. 정리
assertEquals() 메소드는 JUnit 테스트의 기본이 되는 매우 중요한 도구입니다.
숫자, 문자열, 객체 등 다양한 타입을 비교할 때 사용하며, 메소드 사용법과 객체 비교 시 equals() 재정의 여부를 이해하는 것이 중요합니다.
'IT > JUnit' 카테고리의 다른 글
| [JUnit] assertThrows() – 예외 발생 여부 테스트 (0) | 2026.01.06 |
|---|---|
| [JUnit] assertNull(), assertNotNull() – null 여부 확인 (0) | 2026.01.06 |
| [JUnit] assertTrue(), assertFalse() – 조건식이 맞는지 검사 (0) | 2026.01.05 |
| [JUnit] assertNotEquals() – 같지 않아야 하는 값 비교 (0) | 2026.01.05 |
| [JUnit4] JUnit4 dependency 설정하기 (maven) (0) | 2023.06.18 |
