Java테스트와 빌드

JUnit 기본과 테스트 구조

Java 테스트에서 JUnit이 어떤 역할을 하고, 테스트 메서드, assertion, fixture를 어떻게 조직하는지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

java
class CalculatorTest {
    @Test
    void add_returnsSum() {
        Calculator calculator = new Calculator();

        int result = calculator.add(2, 3);

        assertEquals(5, result);
    }
}

설명

  • JUnit은 Java 코드가 기대한 대로 동작하는지 자동으로 검증하게 해 주는 표준적인 테스트 도구입니다. 핵심은 "손으로 실행하고 눈으로 확인하던 과정"을 반복 가능한 코드로 바꾸는 데 있습니다.
  • 좋은 테스트는 단순히 코드를 한 번 더 실행하는 것이 아니라, 입력과 기대 결과를 분명하게 드러냅니다. 그래서 테스트 이름, 준비 단계, 실행 단계, 검증 단계가 읽기 쉽게 나뉘는 편이 좋습니다.
  • @Test는 테스트 메서드를 표시하고, assertEquals, assertThrows, assertTrue 같은 assertion은 기대 조건을 명시합니다. assertion은 많을수록 좋은 게 아니라, 실패했을 때 무엇이 틀렸는지 빨리 알 수 있게 쓰는 것이 중요합니다.
  • fixture는 여러 테스트가 공통으로 쓰는 준비 상태입니다. 너무 큰 fixture는 테스트를 무겁고 이해하기 어렵게 만들 수 있어서, 테스트마다 필요한 상태만 만드는 편이 유지보수에 유리합니다.
  • Java에서 테스트 감각이 생기면 이후 Spring, Android, JPA 같은 큰 프레임워크를 배울 때도 "이 기능을 어떻게 검증하지?"라는 사고를 자연스럽게 이어갈 수 있습니다.

빠른 정리

요소역할
@Test테스트 메서드 표시
assertion기대 결과 검증
fixture테스트 준비 상태
assertThrows예외 검증
테스트 이름의도와 실패 맥락 전달

주의할 점

테스트를 "코드를 한 번 더 실행해 보는 스크립트"처럼 쓰면 실패 원인이 흐려집니다. 준비, 실행, 검증이 분명히 읽히는 구조를 유지하는 것이 더 중요합니다.

참고 링크

2 sources