728x90
기존 프로젝트에서 유닛 테스트 추가하기
앞서 유닛(단위)테스트(1)에서는 유닛 테스트 작성 방법에 대해 알아보았습니다.
https://opencv-master.tistory.com/190
C# 유닛(단위)테스트(1)
오늘은 C#에서의 유닛(단위) 테스트에 대해 알아보려 합니다. C#에서 유닛(단위) 테스트란?유닛 테스트(Unit Test)는 프로그램의 작은 조각(주로 클래스나 메서드)이 올바르게 작동하는지 검증하는
opencv-master.tistory.com
이번에는 이미 존재하는 프로젝트에 유닛 테스트를 추가하는 방법을 단계별로 살펴보겠습니다.
기존 프로젝트에서 유닛 테스트를 작성하려면 테스트 프로젝트를 새로 생성하여 기존 프로젝트를 참조하는 방식으로 진행하는 것이 가장 좋은 방법입니다.
왜 테스트 프로젝트를 분리해야 할까?
- 독립성 보장
- 유닛 테스트는 프로덕션 코드와 별도로 독립적으로 실행되어야 합니다.
- 코드 관리 용이성
- 테스트 코드를 별도로 분리하면 프로젝트 구조가 깔끔해지고, 유지보수가 쉬워집니다.
- 코드 품질 검증
- 테스트 프로젝트를 통해 변경된 코드의 영향을 쉽게 검증할 수 있습니다.
기존 프로젝트에 유닛 테스트 추가하는 방법
1. 테스트 프로젝트 생성하기
- Visual Studio에서 솔루션 탐색기를 열고, 프로젝트의 솔루션 이름을 우클릭.
- 추가 > 새 프로젝트를 선택.
- **"단위 테스트 프로젝트(MSTest)"**를 검색하고 선택.
- 프로젝트 이름은 보통 ProjectName.Tests로 설정합니다.
- 테스트 프로젝트가 기존 솔루션에 추가됩니다.
2. 기존 프로젝트 참조 추가하기
- 새로 생성한 테스트 프로젝트를 우클릭하고, 참조 추가를 선택.
- 프로젝트 > 솔루션 탭에서 기존 프로젝트를 선택 후 확인 클릭.
- 이렇게 하면 테스트 프로젝트에서 기존 프로젝트의 클래스와 메서드에 접근할 수 있습니다.
3. 테스트 클래스 작성하기
테스트 프로젝트에 테스트 클래스를 생성하고, 기존 프로젝트의 코드를 테스트합니다.
테스트 코드는 [TestClass]와 [TestMethod] 어트리뷰트를 사용해 작성합니다.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyExistingProject; // 기존 프로젝트 네임스페이스
[TestClass]
public class ExistingClassTests
{
[TestMethod]
public void SomeMethod_ValidInput_ReturnsExpectedResult()
{
// Arrange
var obj = new ExistingClass(); // 기존 클래스 인스턴스 생성
string input = "Hello";
// Act
string result = obj.SomeMethod(input);
// Assert
Assert.AreEqual("HELLO", result); // 기대값과 결과값 비교
}
}
4. 테스트 실행하기
- Visual Studio 메뉴에서 테스트 > 모든 테스트 실행을 클릭.
- 테스트 탐색기(Test Explorer) 창에서 테스트 결과를 확인합니다.
- 녹색: 성공
- 빨간색: 실패
프로젝트 구조 예시
테스트 프로젝트를 추가하면 프로젝트 구조는 다음과 같이 정리됩니다:
Solution
├── MyExistingProject
│ ├── Class1.cs
│ ├── Class2.cs
├── MyExistingProject.Tests
├── Class1Tests.cs
├── Class2Tests.cs
이 구조는 기능 코드와 테스트 코드를 분리하여 관리하기에 이상적입니다.
추가로 알아둘 점
- 테스트 프로젝트와 기존 프로젝트의 네임스페이스 충돌 방지
- 테스트 코드에서 기존 프로젝트의 클래스와 메서드를 사용할 때 네임스페이스를 명시해야 합니다.
- 예: using MyExistingProject;
- 모의 객체(Mock) 사용
- 테스트 대상 메서드가 외부 의존성을 포함할 경우, Mocking 프레임워크를 사용하여 테스트를 간소화할 수 있습니다.
- 예: Moq, NSubstitute 등.
기존 프로젝트에서 테스트 코드 작성 예시: MSTest 기반
기능 코드: 기존 프로젝트
namespace MyExistingProject
{
public class Calculator
{
public int Add(int a, int b) => a + b;
public int Divide(int a, int b)
{
if (b == 0) throw new DivideByZeroException();
return a / b;
}
}
}
테스트 코드: 테스트 프로젝트
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyExistingProject;
[TestClass]
public class CalculatorTests
{
[TestMethod]
public void Add_ValidInputs_ReturnsCorrectSum()
{
// Arrange
var calculator = new Calculator();
// Act
int result = calculator.Add(3, 5);
// Assert
Assert.AreEqual(8, result);
}
[TestMethod]
[ExpectedException(typeof(DivideByZeroException))]
public void Divide_ByZero_ThrowsDivideByZeroException()
{
// Arrange
var calculator = new Calculator();
// Act
calculator.Divide(10, 0);
// Assert
// ExpectedException으로 예외 발생 확인
}
}
결론
기존 프로젝트에서 유닛 테스트를 추가하려면 별도의 테스트 프로젝트를 생성한 뒤, 기존 프로젝트를 참조하여 테스트를 작성합니다.
이 과정은 초기에는 번거로워 보일 수 있지만, 코드 품질 유지 및 버그 예방에 매우 유용하며, 팀 협업에도 큰 도움이 됩니다.
728x90
'Program > C#' 카테고리의 다른 글
C# 프로젝트 Error 정리 (0) | 2025.01.08 |
---|---|
C# netDxf 라이브러리 (1) (0) | 2024.12.16 |
C# 유닛(단위)테스트(1) (0) | 2024.12.09 |
C# 디스크I/O (1) | 2024.12.07 |
C# _ Interface (0) | 2024.11.24 |