클래스 라이브러리 및 테스트 프로젝트 생성 가이드
이 강좌는 다음 순서로 진행되는 시리즈 강좌 중 하나입니다.
클래스 라이브러리 및 테스트 프로젝트 생성 가이드
이 문서는 Azunt 이름의 .NET Standard 2.0 클래스 라이브러리와 .NET 8.0 MSTest 테스트 프로젝트를 생성하여 IP 범위 검사 유틸리티를 개발하고 검증하는 과정을 설명합니다.
GitHub 저장소는 선택 사항입니다. GitHub 저장소가 없더라도 로컬에서 바로 프로젝트를 생성하고 진행할 수 있습니다.
프로젝트는 루트에 src
폴더를 생성하여 구성합니다.
원하는 로컬 경로를 사용하여 작업하면 됩니다.
🧩 사전 준비
다음 항목들을 준비합니다.
- Visual Studio 또는 Visual Studio Code
- .NET 8.0 SDK
- MSTest 프레임워크
- (선택) GitHub 저장소 (원할 경우)
📁 폴더 구조 준비 및 Visual Studio 열기
원하는 로컬 경로에 새 폴더를 생성하고, Azunt
프로젝트를 위한 작업을 시작합니다.
예를 들어, C:\Projects\Azunt
와 같이 경로를 정하면 됩니다.
Visual Studio를 실행하고, 해당 폴더를 엽니다.
저장소 루트 또는 작업 폴더에 src
폴더를 생성합니다.
Azunt/
└── src/
🛠️ Azunt 클래스 라이브러리 프로젝트 생성
Visual Studio에서 src
폴더에 클래스 라이브러리 (.NET Standard) 프로젝트를 추가합니다.
프로젝트 이름은 Azunt 으로 지정하고, 대상 프레임워크는 .NET Standard 2.0 으로 설정합니다.
생성된 기본 Class1.cs
파일은 삭제합니다.
src/Azunt
폴더에 Networking
폴더를 생성하고, 그 안에 IpAddressUtility.cs
파일을 추가합니다.
다음 코드를 작성합니다.
using System.Net;
namespace Azunt.Networking
{
public static class IpAddressUtility
{
public static bool IsIpInRange(string currentIp, string startIp, string endIp)
{
var addr = IPAddress.Parse(currentIp);
var lowerBound = IPAddress.Parse(startIp);
var upperBound = IPAddress.Parse(endIp);
byte[] addrBytes = addr.GetAddressBytes();
byte[] lowerBytes = lowerBound.GetAddressBytes();
byte[] upperBytes = upperBound.GetAddressBytes();
for (int i = 0; i < addrBytes.Length; i++)
{
if (addrBytes[i] < lowerBytes[i] || addrBytes[i] > upperBytes[i])
{
return false;
}
}
return true;
}
}
}
코드를 저장한 후, 프로젝트를 빌드하여 오류가 없는지 확인합니다.
🧪 MSTest 기반 테스트 프로젝트 생성
src
폴더에 MSTest 테스트 프로젝트를 추가합니다.
프로젝트 이름은 Azunt.Networking.Tests 로 지정하고, 대상 프레임워크는 .NET 8.0 이상 으로 설정합니다.
테스트 프로젝트가 생성되면, Azunt 클래스 라이브러리 프로젝트를 참조로 추가합니다.
- 테스트 프로젝트에서 참조 추가 > 프로젝트 참조 를 선택합니다.
- Azunt 프로젝트를 선택하여 추가합니다.
src/Azunt.Networking.Tests
폴더에 IpAddressUtilityTests.cs
파일을 생성하고, 다음 코드를 작성합니다.
using Azunt.Networking;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Azunt.Networking.Tests
{
[TestClass]
public class IpAddressUtilityTests
{
[TestMethod]
public void IsIpInRange_ShouldReturnTrue_WhenIpIsInRange()
{
Assert.IsTrue(IpAddressUtility.IsIpInRange("192.168.0.100", "192.168.0.1", "192.168.0.255"));
}
[TestMethod]
public void IsIpInRange_ShouldReturnFalse_WhenIpIsBelowRange()
{
Assert.IsFalse(IpAddressUtility.IsIpInRange("192.168.0.0", "192.168.0.1", "192.168.0.255"));
}
[TestMethod]
public void IsIpInRange_ShouldReturnFalse_WhenIpIsAboveRange()
{
Assert.IsFalse(IpAddressUtility.IsIpInRange("192.168.1.0", "192.168.0.1", "192.168.0.255"));
}
[TestMethod]
public void IsIpInRange_ShouldReturnTrue_WhenIpIsStartOfRange()
{
Assert.IsTrue(IpAddressUtility.IsIpInRange("192.168.0.1", "192.168.0.1", "192.168.0.255"));
}
[TestMethod]
public void IsIpInRange_ShouldReturnTrue_WhenIpIsEndOfRange()
{
Assert.IsTrue(IpAddressUtility.IsIpInRange("192.168.0.255", "192.168.0.1", "192.168.0.255"));
}
}
}
코드를 저장하고 Visual Studio 메뉴에서 테스트 > 모든 테스트 실행 을 선택하여 테스트를 실행합니다.
모든 테스트가 성공하는지 확인합니다.
📂 프로젝트 구성 결과
구성된 폴더 구조는 다음과 같습니다.
Azunt/
└── src/
├── Azunt/
│ └── Networking/
│ └── IpAddressUtility.cs
└── Azunt.Networking.Tests/
└── IpAddressUtilityTests.cs
IP 주소 범위 검사를 위한 클래스 라이브러리와 테스트 프로젝트 구성이 완료됩니다.
📝 마무리
이 가이드를 따라 프로젝트와 테스트 코드를 작성하면,
.NET Standard 기반의 유틸리티 클래스와 .NET 8.0 MSTest 기반 테스트 프로젝트를 활용하여 손쉽게 기능 구현 및 검증을 진행할 수 있습니다.
GitHub 저장소가 없어도 로컬에서 바로 작업을 시작할 수 있으며,
원하는 경우 이후 GitHub 저장소를 추가하거나 NuGet 패키지로 배포하는 등 확장할 수 있습니다.
이제 기본적인 프로젝트 구조가 완성되었습니다.
필요에 따라 기능을 확장하고, 테스트를 추가하면서 Azunt 라이브러리를 발전시켜 나가면 됩니다.