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단계를 반복하면서 코드의 품질을 높이는 것입니다.
- Red – 실패하는 테스트 작성
- 코드가 없는 상태에서 먼저 테스트 코드 작성
- 당연히 실패하게 됨
- Green – 테스트 통과 코드 작성
- 테스트가 통과하도록 코드 작성
- 최소한의 코드만 작성
- Refactor – 리팩토링
- 중복 코드 제거 및 성능 최적화
- 테스트는 계속 통과해야 함
✔️ "Red → Green → Refactor"를 반복하면 자연스럽게 견고한 코드가 완성됩니다.
✅ MSTest로 TDD 환경 설정하기
이제 C#에서 MSTest를 설정해 보겠습니다.
MSTest는 .NET에서 기본적으로 제공하는 단위 테스트 프레임워크로, 사용법이 간단하고 Visual Studio와 완벽히 통합됩니다.
🖥️ 1. MSTest 설치 및 프로젝트 생성
- Visual Studio에서 새 프로젝트 생성
- 콘솔 앱(.NET) 선택
- 프로젝트 이름 설정 (예: TDDExample)
🔧 2. MSTest 패키지 설치
NuGet 패키지 관리에서 다음 명령어 입력:
dotnet add package MSTest.TestFramework
dotnet add package MSTest.TestAdapter
📂 3. 테스트 프로젝트 생성
- 솔루션에 새 프로젝트 추가
- 단위 테스트 프로젝트 (.NET) 선택
- MSTest 패키지 참조 설정
- 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 실행 및 결과 확인
- Visual Studio → 테스트 → 모든 테스트 실행
- 결과 창에서 성공 및 실패 상태 확인 가능
✔️ 테스트 통과 시 초록색 → 코드 작성 완료
✔️ 테스트 실패 시 빨간색 → 코드 수정 필요
✅ TDD 적용 시 발생할 수 있는 문제
❗ 테스트가 실패할 경우
- 입력 값이 잘못된 경우 → 테스트 데이터 수정
- 코드 로직이 잘못된 경우 → 코드 수정
- 테스트 메서드 구성이 잘못된 경우 → MSTest 속성 수정
❗ 테스트 통과 후 실패로 변하는 경우
- 코드 수정 과정에서 기존 테스트가 깨질 수 있음 → 회귀 테스트 필요
- 테스트 환경이 바뀌었을 수 있음 → 환경 설정 확인
🎯 마무리 및 다음 단계
지금까지 TDD의 개념과 MSTest 설정 및 간단한 테스트 작성 방법을 알아보았습니다.
다음 글에서는 MSTest를 활용해 실제 기능을 구현하면서 TDD 사이클을 반복해 보겠습니다.