[Test] 단위 테스트(Unit Test)

2025. 9. 27. 16:34·Development/개발 공부

단위 테스트(Unit Test)

단위 테스트란 애플리케이션의 특정 모듈(메소드, 클래스 등)이 올바르게 동작하는지 검증하는 가장 작은 테스트 단위이다.

 

❓ 단위 테스트는 왜 필요할까?

  • 테스트 코드의 작성 시간이 적다.
  • 버그를 조기에 발견하고 수정할 수 있다.
         통합 테스트 전 모듈 단위로 테스트를 수행하면, 문제가 발견될 시 바로 수정할 수 있다.
  • 리팩토링과 유지보수가 훨씬 쉬워진다.
         기존 코드에 대한 단위 테스트가 이미 작성되어 있다면, 이후 리팩토링 과정에서 테스트 결과의 일관성을 통해
         코드 품질을 유지할 수 있다.

단위 테스트의 특징은 다음과 같다.

  1. 예상 결과와 실제 결과를 비교한다.
  2. CI(Jenkins, Azure DevOps) 환경에서 자동화된 테스트가 가능하다.
  3. 테스트 코드는 간결하고 명확해야 한다.

 


 

테스트 대역(Test Double)

테스트 대역이란 테스트 환경에서 실제 객체 대신 테스트 목적으로 사용되는 가짜 객체이다.

 

테스트 대역의 종류는 Dummy, Stub, Fake, Spy, Mock이 있다.

 

Dummy

Dummy는 가장 기본적인 테스트 대역으로, 인스턴스화된 객체는 필요하지만 내부 기능이 필요하지 않을 때 사용한다. 

따라서 테스트가 필요한 객체가 단순히 매개변수를 할당할 때 사용된다.

 

Stub

Stub은 미리 지정한 값을 반환하여 테스트 대상의 동작을 검증하는 테스트 대역이다.

Stub을 사용하면 상태 기반 검증이 가능하다.

즉, 특정 입력에 대한 테스트 결과와 미리 지정한 예상 값을 비교함으로써 동작의 일관성을 확인할 수 있다.

 

Fake

Fake는 실제로 사용되는 객체는 아니지만 같은 동작을 하는 구현된 객체이다.

테스트를 수행할 때, 기존 DB 대신 H2와 같은 인메모리 데이터베이스를 사용하기도 한다.

따라서 테스트 환경에서만 사용되며, 프로덕션 환경에서는 적합하지 않다.

 

Spy

Spy는 Stub의 역할과 동시에, 메소드 호출 횟수나 전달된 인자 등 테스트 실행 내역을 추가로 기록하는 테스트 대역이다.

 

Mock

Mock은 테스트 대상이 사전에 정의한 규칙대로 메소드를 호출했는지 확인하는 테스트 대역이다.

Mock을 사용하면 행위 기반 검증이 가능하다.

 

👏

 

참고

https://dawulle.tistory.com/8

https://beststar-1.tistory.com/29#%EB%8D%94%EB%AF%B8(Dummy)

 

'Development > 개발 공부' 카테고리의 다른 글

[Test] Mock을 이용한 단위 테스트(with Mockito)  (0) 2025.10.01
[Test] Stub을 이용한 단위 테스트(with JUnit)  (0) 2025.09.30
WEB / WAS(Web Application Server)  (0) 2025.09.17
가상 머신(VM, Virtual Machine)  (0) 2025.08.27
컴파일 타임(Compile Time) / 런타임(Runtime)  (0) 2025.08.26
'Development/개발 공부' 카테고리의 다른 글
  • [Test] Mock을 이용한 단위 테스트(with Mockito)
  • [Test] Stub을 이용한 단위 테스트(with JUnit)
  • WEB / WAS(Web Application Server)
  • 가상 머신(VM, Virtual Machine)
jjangsudiary
jjangsudiary
jjangsudiary 님의 블로그 입니다.
  • jjangsudiary
    jjangsudiary 님의 블로그
    jjangsudiary
  • 전체
    오늘
    어제
    • 분류 전체보기 (81) N
      • 이모저모 (0)
        • 회고 (0)
      • Development (17) N
        • 개발 공부 (14) N
        • 프로젝트 (2)
      • Android (10)
        • Compose (1)
      • AI (15)
      • Computer Science (25)
        • 네트워크 (8)
        • 데이터베이스 (10)
        • 운영체제 (6)
        • 자료구조 (0)
        • 컴퓨터구조 (1)
      • Java (9)
        • 디자인패턴 (2)
      • Spring (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    CS
    안드로이드
    머신러닝
    database
    java
    운영체제
    android
    Python
    딥러닝
    db
    TensorFlow
    인공지능
    파이썬
    백준
    Ai
    프로그래머스
    baekjoon
    자바
    코딩 테스트
    os
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
jjangsudiary
[Test] 단위 테스트(Unit Test)
상단으로

티스토리툴바