본문 바로가기

Spring/Spring 공부

단위 테스트


**단위 테스트(Unit Testing)**

소프트웨어 개발에서 개별 구성 요소(주로 함수 또는 메서드)가 예상대로 작동하는지 확인하기 위해 수행하는 테스트이다. 단위 테스트는 작은 코드 단위를 독립적으로 테스트하여 그 코드가 주어진 입력에서 올바른 출력을 내는지 검증합니다. 이는 코드의 특정 부분이 정확히 동작하는지, 오류가 없는지 보장하는 데 중점을 둡니다.

단위 테스트의 주요 특징:

  1. 작은 코드 단위 테스트: 함수, 메서드, 클래스 등 매우 작은 단위를 테스트합니다.
  2. 독립적: 각 테스트는 다른 테스트에 의존하지 않고 독립적으로 수행됩니다. 테스트 단위가 서로 영향을 미치지 않게 해야 합니다.
  3. 자동화: 단위 테스트는 자동화된 도구를 통해 실행되며, 빠르게 반복적으로 테스트할 수 있습니다.
  4. 빠른 피드백: 코드 변경 후 바로 테스트를 실행하여 코드가 여전히 예상대로 동작하는지 빠르게 확인할 수 있습니다.

단위 테스트의 장점:

  • 버그 발견: 코드의 버그를 조기에 발견할 수 있습니다.
  • 리팩토링의 안전성: 리팩토링(코드 개선)을 할 때, 기존 기능이 정상적으로 동작하는지 단위 테스트를 통해 확인할 수 있습니다.
  • 문서화: 테스트 코드는 코드 사용 방법을 설명하는 하나의 문서 역할을 합니다. 이로써 다른 개발자들이 코드를 이해하는 데 도움을 줍니다.
  • 유지보수성: 프로젝트가 커져도 코드의 각 부분이 예상대로 작동하는지 지속적으로 확인할 수 있습니다.

단위 테스트 예시 (자바):

자바에서는 JUnit 같은 테스트 프레임워크를 사용하여 단위 테스트를 작성합니다. 아래는 자바의 JUnit을 사용한 간단한 단위 테스트 예시입니다.

예시 코드:

java
// Calculator 클래스
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public int subtract(int a, int b) {
        return a - b;
    }
}

단위 테스트 코드 (JUnit 사용):

java
 
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result); // 2 + 3 = 5 인지 테스트
    }

    @Test
    public void testSubtract() {
        Calculator calculator = new Calculator();
        int result = calculator.subtract(5, 3);
        assertEquals(2, result); // 5 - 3 = 2 인지 테스트
    }
}

이 예시에서:

  • @Test 애너테이션은 JUnit이 이 메서드가 테스트임을 인식하도록 합니다.
  • assertEquals는 두 값이 같은지 비교하여 테스트가 성공했는지 여부를 판단합니다. 예를 들어, calculator.add(2, 3)의 결과가 5와 일치하면 테스트가 성공합니다.
  • Calculator 클래스의 각 메서드가 올바르게 작동하는지 확인하기 위해 독립적인 테스트를 수행합니다.

단위 테스트 도구:

  • JUnit (Java)
  • PyTest (Python)
  • Mocha (JavaScript, Node.js)
  • NUnit (C#)

단위 테스트와 다른 테스트와의 차이:

  • 단위 테스트: 작은 코드 단위를 독립적으로 테스트.
  • 통합 테스트: 여러 모듈이 함께 올바르게 동작하는지 확인.
  • 시스템 테스트: 전체 시스템이 요구사항에 맞게 동작하는지 확인.
  • 회귀 테스트: 코드 수정 후 기존 기능이 여전히 정상 작동하는지 확인.

단위 테스트는 개발 중에 코드의 품질을 높이고 유지보수성을 강화하는 중요한 과정입니다.

'Spring > Spring 공부' 카테고리의 다른 글

Jacoco  (1) 2024.10.23
@Component의 역할과 사용법  (0) 2024.10.23
Spring boot 자주 사용되는 어노테이션(Annotations)  (0) 2024.02.16
6. Spring Boot Annotations  (0) 2022.07.03
5. ObjectMapper  (0) 2022.07.02