본문 바로가기
카테고리 없음

📝 C# TDD란 무엇인가? | 개념부터 MSTest 설정까지 완벽 가이드

by bbongz 2025. 3. 19.

 

TDD(Test-Driven Development)는 소프트웨어 개발의 필수 전략 중 하나로 자리 잡고 있습니다. 특히 C#과 같은 언어에서는 TDD를 적용하면 코드의 품질을 높이고, 유지 보수가 쉬워집니다. 이번 시리즈에서는 C#에서 MSTest를 사용한 TDD 적용 방법을 단계별로 설명하겠습니다.

시리즈 첫 번째 글에서는 TDD의 개념Red → Green → Refactor 사이클, 그리고 MSTest를 설정하는 방법까지 다뤄보겠습니다. 😎


TDD란 무엇인가?

🎯 TDD(Test-Driven Development)의 정의

TDD는 테스트 주도 개발의 약자로, 코드 작성 전에 먼저 테스트 코드를 작성하고 이를 통과하도록 코드를 작성하는 개발 방식입니다.

기본 개념은 다음과 같습니다:

  • Red: 실패하는 테스트 작성
  • Green: 테스트를 통과하는 코드 작성
  • Refactor: 중복된 코드 제거 및 성능 최적화

🚀 "테스트 → 코드 작성 → 리팩토링"의 사이클을 반복하면서 코드를 완성해 나가는 과정입니다.


TDD의 장점과 단점

장점 단점
코드의 품질 향상 초기 개발 속도가 느림
디버깅 시간 단축 테스트 작성 시간이 필요
유지 보수성 강화 학습 곡선이 높음
코드 구조 개선 및 최적화 복잡한 로직의 경우 테스트 작성이 어려움

🛠️ Red → Green → Refactor 사이클의 원리

TDD의 핵심은 다음 3단계를 반복하면서 코드의 품질을 높이는 것입니다.

  1. Red – 실패하는 테스트 작성
    • 코드가 없는 상태에서 먼저 테스트 코드 작성
    • 당연히 실패하게 됨
  2. Green – 테스트 통과 코드 작성
    • 테스트가 통과하도록 코드 작성
    • 최소한의 코드만 작성
  3. Refactor – 리팩토링
    • 중복 코드 제거 및 성능 최적화
    • 테스트는 계속 통과해야 함

✔️ "Red → Green → Refactor"를 반복하면 자연스럽게 견고한 코드가 완성됩니다.


MSTest로 TDD 환경 설정하기

이제 C#에서 MSTest를 설정해 보겠습니다.
MSTest는 .NET에서 기본적으로 제공하는 단위 테스트 프레임워크로, 사용법이 간단하고 Visual Studio와 완벽히 통합됩니다.


🖥️ 1. MSTest 설치 및 프로젝트 생성

  1. Visual Studio에서 새 프로젝트 생성
  2. 콘솔 앱(.NET) 선택
  3. 프로젝트 이름 설정 (예: TDDExample)

🔧 2. MSTest 패키지 설치

NuGet 패키지 관리에서 다음 명령어 입력:

dotnet add package MSTest.TestFramework
dotnet add package MSTest.TestAdapter

📂 3. 테스트 프로젝트 생성

  1. 솔루션에 새 프로젝트 추가
  2. 단위 테스트 프로젝트 (.NET) 선택
  3. MSTest 패키지 참조 설정
  4. using 추가:
using Microsoft.VisualStudio.TestTools.UnitTesting;

🧪 4. MSTest 기본 테스트 코드 작성

MSTest에서 테스트 코드는 [TestClass], [TestMethod] 속성을 사용해 작성합니다.

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace TDDExample.Tests
{
    [TestClass]
    public class CalculatorTests
    {
        [TestMethod]
        public void Test_Addition()
        {
            // Arrange
            int a = 2;
            int b = 3;
            int expected = 5;

            // Act
            int result = a + b;

            // Assert
            Assert.AreEqual(expected, result);
        }
    }
}
  • [TestClass] – 테스트 클래스 정의
  • [TestMethod] – 개별 테스트 메서드 정의
  • Arrange – 테스트 데이터 설정
  • Act – 테스트 대상 코드 실행
  • Assert – 결과 검증

🚀 5. MSTest 실행 및 결과 확인

  1. Visual Studio → 테스트 → 모든 테스트 실행
  2. 결과 창에서 성공 및 실패 상태 확인 가능

✔️ 테스트 통과 시 초록색 → 코드 작성 완료
✔️ 테스트 실패 시 빨간색 → 코드 수정 필요


TDD 적용 시 발생할 수 있는 문제

테스트가 실패할 경우

  • 입력 값이 잘못된 경우 → 테스트 데이터 수정
  • 코드 로직이 잘못된 경우 → 코드 수정
  • 테스트 메서드 구성이 잘못된 경우 → MSTest 속성 수정

테스트 통과 후 실패로 변하는 경우

  • 코드 수정 과정에서 기존 테스트가 깨질 수 있음 → 회귀 테스트 필요
  • 테스트 환경이 바뀌었을 수 있음 → 환경 설정 확인

🎯 마무리 및 다음 단계

지금까지 TDD의 개념MSTest 설정 및 간단한 테스트 작성 방법을 알아보았습니다.
다음 글에서는 MSTest를 활용해 실제 기능을 구현하면서 TDD 사이클을 반복해 보겠습니다.