클래스 라이브러리 및 테스트 프로젝트 생성 가이드

  • 5 minutes to read

이 강좌는 다음 순서로 진행되는 시리즈 강좌 중 하나입니다.

  1. GitHub 저장소 생성 및 첫 커밋 따라하기
  2. 클래스 라이브러리 및 테스트 프로젝트 생성 (현재 문서)
  3. NuGet 패키지 발행 가이드

클래스 라이브러리 및 테스트 프로젝트 생성 가이드

이 문서는 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 라이브러리를 발전시켜 나가면 됩니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com