Code

[단위 테스트] 2-1. 단위 테스트란 무엇인가: 단위 테스트란

noahkim_ 2025. 1. 7. 00:14

블라디미르 코리코프 님의 "단위 테스트" 책을 정리한 포스팅입니다.


1. '단위 테스트'의 정의

단위 테스트란

작은 코드 조각 단위로
빠르고 자동으로 실행
격리된 방식

 

격리

  • 단위 테스트는 격리된 환경에서 실행되야 함
  • 테스트는 순서에 의존하지 않아야 하며, 독립적으로 실행 가능한 상태여야 함

 

공유 의존성
  • 테스트 간에 공유되고 서로의 결과에 영향을 미칠 수 있는 상태나 데이터
    • 상태변경이 허용될 경우, 테스트 간 영향을 끼칠 수 있음
  • 공유 의존성을 제거하거나, 모의 객체로 대체
  • 정적 가변 필드 등

 

비공개 의존성
  • 애플리케이션의 실행 흐름에서 보이지 않는 의존성
  • 메모리 기반의 프록시로 대체
  • 데이터베이스 연결, 시스템 접근 등

 

프로세스 의존성
  • 애플리케이션 실행 프로세스 외부에서 실행되는 의존성
  • 의존성을 대체할 Mock 시스템 사용
  • 메시지 큐, 백그라운드 작업자 등

 

Mock

@Test
public void testAdd() {
    // Mock 객체 생성
    ResultRepository mockRepository = Mockito.mock(ResultRepository.class);

    // 테스트 대상 클래스 생성 (Mock 주입)
    CalculatorService service = new CalculatorService(mockRepository);

    // 테스트 실행
    int result = service.add(5, 3);

    // 결과 검증
    assertEquals(8, result);

    // Mock 객체의 동작 검증
    verify(mockRepository).saveResult(8); // saveResult(8)가 호출되었는지 확인
}
  • 테스트 대역의 부분 집합
  • 실제 상태와 관계없이 테스트가 요구하는 방식으로 요청에 응답
  • 해당 의존성을 구현하기 위해서는 인터페이스가 필요