xUnit 테스트 프레임워크 사용법

시작하기

  1. 이전에 xUnit.net Visual Studio Runner 확장 패키지를 설치한 경우, "도구" 메뉴의 "확장 및 업데이트"에서 해당 패키지를 제거해야 합니다.

  2. %TEMP%\VisualStudioTestExplorerExtensions 폴더를 삭제합니다.

Xunit 설치 방법: Xunit은 이제 플러그인 없이 NuGet을 통해 간단히 설치할 수 있습니다:

• PM> Install-Package Xunit

• PM> Install-Package Xunit.Runner.VisualStudio -Pre (Visual Studio 테스트 탐색기 호환, VS2015는 Pre 버전 필수)

프레임워크 비교

어트리뷰트

NUnit 2.2 MSTest 2005 xUnit.net 2.x 설명
[Test] [TestMethod] [Fact] 테스트 메서드를 표시
[TestFixture] [TestClass] 없음 xUnit.net은 테스트 클래스에 어트리뷰트가 필요하지 않으며, 어셈블리 내 모든 공개 클래스의 테스트 메서드를 자동으로 검색
[ExpectedException] [ExpectedException] Assert.Throws 예외 처리 방식 변경
[SetUp] [TestInitialize] 생성자 테스트 초기화 시 생성자 사용 권장
[TearDown] [TestCleanup] IDisposable.Dispose 리소스 정리 시 Dispose 메서드 사용
[TestFixtureSetUp] [ClassInitialize] IClassFixture<T> 클래스 수준 테스트 환경 설정
[TestFixtureTearDown] [ClassCleanup] IClassFixture<T> 클래스 수준 테스트 환경 정리
n/a n/a ICollectionFixture<T> 테스트 컬렉션 수준 환경 설정
[Ignore] [Ignore] [Fact(Skip="이유")] 임시로 테스트 건너뛰기
[Property] [TestProperty] [Trait] 테스트 메타데이터 설정
n/a [DataSource] [Theory] 데이터 기반 테스트 지원

어트리뷰트 주의사항

  • 예외 처리 시 [ExpectedException] 대신 Assert.Throws 사용 권장
  • 각 테스트별 초기화/정리보다 생성자와 Dispose 메서드를 통한 일관된 관리 권장
  • 공유 테스트 환경 관리 시 IClassFixture<T>ICollectionFixture<T> 활용
  • 데이터 기반 테스트는 [Theory][InlineData] 등으로 구현

단언

NUnit 2.2 MSTest 2005 xUnit.net 1.x 설명
AreEqual AreEqual Equal 제네릭 지원
AreNotEqual AreNotEqual NotEqual 제네릭 지원
AreSame AreSame Same 참조 비교
Contains Contains Contains 컬렉션 요소 검색
Fail Fail 없음 Assert.True(false)로 대체
IsNotNull IsNotNull NotNull null 검증
IsNull IsNull Null null 검증
IsTrue IsTrue True 불리언 검증

테스트 작성 가이드

테스트 클래스 구성

  • 공개 클래스로 선언
  • 테스트 메서드는 [Fact]로 표시

단언 방법

Assert.Equal(3, Math.Max(3, 2));

xunit.should 라이브러리 사용 시

Math.Max(3, 2).ShouldBe(3);

수명 관리

  • 생성자에서 초기화 작업
  • IDisposable 구현 시 Dispose() 자동 호출

예외 테스트

[Fact]
public void TestException()
{
    Assert.Throws<InvalidOperationException>(() => TriggerException());
}

private void TriggerException()
{
    throw new InvalidOperationException();
}

추가 기능

  • 테스트 이름 변경: [Fact(DisplayName = "Max 테스트")]
  • 테스트 건너뛰기: [Fact(Skip = "구현 중")]
  • 그룹 분류: [Trait("Group", "Category")]

태그: xUnit 테스트 프레임워크 C# 단언 테스트 구조

6월 21일 19:07에 게시됨