단위 테스트

프로그램의 가장 작은 단위(메서드, 클래스 등)를 독립적으로 검증하는 테스트 기법입니다.

핵심 특징

좋은 단위 테스트의 원칙 (F.I.R.S.T)

원칙의미설명
Fast빠르게수천 개를 수 초 내에 실행 가능해야 함
Independent독립적으로테스트 간 순서나 의존 관계 없음
Repeatable반복 가능하게어떤 환경에서든 동일한 결과
Self-validating자가 검증성공/실패를 자동으로 판단
Timely적시에프로덕션 코드 작성 전후에 즉시 작성

Java 예시 (JUnit 5 + Mockito)

// 테스트 대상
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

// 단위 테스트
@ExtendWith(MockitoExtension.class)
class CalculatorTest {

    private Calculator calculator = new Calculator();

    @Test
    @DisplayName("두 양수의 덧셈이 정상 동작한다")
    void addTwoPositiveNumbers() {
        // Given
        int a = 3, b = 5;

        // When
        int result = calculator.add(a, b);

        // Then
        assertThat(result).isEqualTo(8);
    }
}

테스트 종류 비교

구분단위 테스트통합 테스트E2E 테스트
범위메서드/클래스모듈 간 연동전체 시스템
속도매우 빠름보통느림
외부 의존성없음 (Mock 사용)있음 (DB 등 포함)있음 (실제 환경)
비용낮음중간높음
피드백 속도즉시수 분수십 분

테스트 피라미드: 단위 테스트를 가장 많이 작성하고, 위로 갈수록(통합 → E2E) 수를 줄이는 것이 권장됩니다.

CSLOG에서 보기