[실습] C# 8.0의 기능을 테스트 프로젝트에서 실행하기

  • 3 minutes to read

소개

C# 8.0의 최신 기능을 .NET Core 테스트 프로젝트에서 테스트해 보겠습니다.

따라하기 1: .NET Core 테스트 프로젝트 생성

(1) DotNetCore.Tests 이름으로 [C# + MSTest + .NET 7.0] 기반의 테스트 프로젝트를 새롭게 생성하거나 DotNet 솔루션에 추가합니다.

(2) 기본으로 생성된 cs 파일은 삭제합니다.

따라하기 2: 널가능 참조 형식(Nullable Reference Types) 테스트

(1) C# 8.0으로 들어서는 널에 대한 좀 더 엄격한 제약을 제공합니다. Visual Studio 또는 Visual Studio Code를 사용하여 null 값을 다룰 때 경고 수준이 이전 버전보다 더 강력합니다.

(2) DotNetCore.Tests 프로젝트에 마우스 오른쪽 버튼을 클릭 후 [Edit Project File] 메뉴를 선택하여 csproj 파일의 편집 화면으로 들어갑니다.

(3) DotNetCore.Tests.csproj 파일의 여러 항목 중에서 <PropertyGroup> 섹션에 <Nullable> 항목이 enable로 되어 있는지 확인 또는 없으면 다음 샘플 코드와 같이 추가합니다.

코드: DotNetCore.Tests.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <IsPackable>false</IsPackable>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

(4) DotNetCore.Tests 프로젝트에 NullableReferenceTypeTest.cs란 이름으로 클래스 파일을 만들고 다음과 같이 테스트 클래스와 테스트 메서드를 작성합니다. 비주얼 스튜디오의 C# 컴파일러는 Name 속성에 밑줄을 표시하고 null 값이 들어올 가능성이 있다고 작은 경고를 띄울 것입니다. 무시합니다.

코드: NullableReferenceTypeTest.cs

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace DotNetCore.Tests
{
    class Person
    {
        public string Name { get; set; } 
    }

    [TestClass]
    public class NullableReferenceTypeTest
    {
        [TestMethod]
        public void NullableEnableTest()
        {
            Console.WriteLine((new Person()).Name);
        }
    }
}

이 경고를 없애려면 Name 속성을 다음 코드와 같이 널 가능 참조 형식으로 변경하면 됩니다.

public string? Name { get; set; }

따라하기 3: 튜플 리터럴에 default 키워드 사용하기

(1) DotNetCore.Tests 프로젝트에 DefaultDeconstructionTest.cs 이름으로 클래스 파일을 작성하고 다음과 같이 테스트 코드를 작성합니다.

코드: DefaultDeconstructionTest.cs

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace DotNetCore.Tests
{
    [TestClass]
    public class DefaultDeconstructionTest
    {
        [TestMethod]
        public void DefaultTest()
        {
            (int number, string? name) = (default, default);

            Assert.AreEqual(0, number);
            Assert.IsNull(name);
        }
    }
}

튜플 리터럴에 default 키워드를 사용하면 해당 변수는 해당 데이터 형식의 기본값으로 초기화됩니다.

마무리

우선 짧은 실습 예제로 C# 8.0의 새로운 기능을 테스트해 보았습니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com