[실습] C# 8.0의 기능을 테스트 프로젝트에서 실행하기
소개
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의 새로운 기능을 테스트해 보았습니다.