TDD 예시 코드: TDD 프로세스 예시 코드

하리보·2024년 12월 8일

TDD 실습: TDD 프로세스 예시 코드

이번 포스팅에서는 간단한 계산기 프로그램을 TDD 방식으로 구현해보면서 TDD의 예제를 살펴보겠습니다.


4.1 TDD 프로세스 예시

TDD의 Red-Green-Refactor 사이클을 활용하여 간단한 계산기 프로그램을 만들어보겠습니다. JUnit과 AssertJ를 사용해 테스트 코드를 작성하고 점진적으로 개선하는 과정을 보볼 수 있습니다.


Step 1: 테스트 작성 (Red)

먼저, 계산기 프로그램의 핵심 기능인 덧셈 기능에 대한 테스트를 작성합니다. 아직 기능이 구현되지 않았으므로 테스트는 실패해야 합니다.

코드

import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

class CalculatorTest {

    @Test
    void shouldReturnSumOfTwoNumbers() {
        // Arrange
        Calculator calculator = new Calculator();

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

        // Assert
        assertThat(result).isEqualTo(5); // 테스트 실패: add() 메서드가 아직 구현되지 않음
    }
}

결과

  • add() 메서드가 없기 때문에 컴파일 에러 또는 테스트 실패가 발생합니다.
  • TDD의 철학에 따라 실패를 먼저 확인합니다.

Step 2: 최소한의 코드 작성 (Green)

테스트를 통과시키기 위해 필요한 최소한의 코드를 작성합니다.

코드

class Calculator {
    public int add(int a, int b) {
        return a + b; // 테스트를 통과시키기 위한 최소 구현
    }
}

결과

  • 테스트가 통과합니다.
  • 이 단계에서는 "작동하는 코드"를 만드는 데 집중하며, 복잡한 로직은 나중에 처리합니다.

Step 3: 리팩터링 (Refactor)

테스트가 통과한 후, 코드를 개선합니다.
현재 코드는 간단하지만, 앞으로 확장성을 고려해 계산기 기능을 체계적으로 정리할 수 있습니다.

코드

class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    // 추가 기능 예시: 곱셈
    public int multiply(int a, int b) {
        return a * b;
    }
}

결과

  • 테스트를 다시 실행해 기존 기능이 유지되는지 확인합니다.
  • TDD 사이클을 반복하여 다른 기능(뺄셈, 곱셈, 나눗셈)도 점진적으로 구현할 수 있습니다.

JUnit과 AssertJ를 활용한 테스트 작성

  • JUnit: 기본적인 테스트 프레임워크.
  • AssertJ: 가독성이 높은 단언문 제공.

AssertJ의 단언문 예시

assertThat(result).isEqualTo(5); // 명확하고 읽기 쉬운 단언문
assertThat(result).isGreaterThan(0);

요약:
테스트는 코드 품질을 유지하는 안전망 역할을 하며, 리팩터링과 기능 추가를 더 자유롭고 자신 있게 할 수 있도록 도와줍니다.

⬇️ 보다 자세한 정보는 아래 포스팅 참고
AssertJ로 테스트 코드를 작성해보자


결론
TDD는 단순히 테스트 작성 방법론을 넘어, “작동하는 코드에서 더 나은 코드로” 가는 과정입니다. 🚀

profile
하리보의 개발 블로그

0개의 댓글