AutoFixture: C#에서 테스트 데이터를 자동으로 생성하는 라이브러리 소개

5031 단어 testC#
테스트 데이터를 수작업으로 모두 작성하고 있는 사람은 없습니까? 그런 당신에게 추천하는 라이브러리의 소개입니다.

사용 용도는 주로 Moq의 반환 데이터를 자동 생성하고 싶을 때나, 파라미터를 자동 생성하고 싶을 때, 그 외에는 Database의 데이터를 자동 생성하고 싶을 때에도 사용할 수 있습니다.

Package Install



Visual Studio의 Package Manager 화면이나 Command를 사용하여 설치할 수 있습니다.



패키지 관리자
Install-Package AutoFixture -Version 4.11.0

.NET CLI
dotnet add package AutoFixture --version 4.11.0

시험에 사용해보기



모델의 테스트 데이터를 만들어 보겠습니다. MyModel을 준비했습니다.
public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTimeOffset CreatedAt { get; set; }
    public MyInnerModel MyInner { get; set; }
}

public class MyInnerModel
{
    public string[] Notes { get; set; }
}

AutoFixture를 사용하여 MyModel을 만듭니다.
[Fact]
public void MyModelTest()
{
    var fixture = new Fixture();
    var myModel = fixture.Create<MyModel>();

    Assert.NotNull(myModel);
}

Breakpoint를 설정하고 내용을 보면 이런 식으로 자동으로 설정되어 있습니다.



AutoFixture로 할 수 있는 일


  • 자동 설정 값을 사용자 정의
  • DataAnnotation 자동 로드
  • E.g. StringLength(3) 가 부여되고 있는 경우, 자동적으로 3 문자의 데이터가 설정된다.

  • Entity Framework의 작은 테이블 데이터 자동 생성
  • 제대로 외래 키를 설정한 경우에만.
  • 부모 테이블을 fixture.Create 한 후 Add하면 자식 테이블의 데이터도 모두 들어갑니다.
  • 가능하다면 DB First (.edmx)보다 Code First를 사용하는 것이 좋습니다.


  • 링크



    Document : Cheat Sheet · AutoFixture/AutoFixture Wiki

    NuGet Gallery : NuGet Gallery | AutoFixture 4.11.0

    GitHub 리포지토리 : AutoFixture/AutoFixture: AutoFixture is an open source library for .NET designed to minimize the 'Arrange' phase of your unit tests in order to maximize maintainability. Its primary goal is to allow developers to focus on what is being test the test scenario, by making it easier to create object graphs containing test data.

    비슷한 기능을 가진 라이브러리



    여기도 사용해 보았습니다만, 개인적으로는 AutoFixture 쪽을 좋아했습니다.

    Bogus : bchavez/Bogus: A simple and sane fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js.

    좋은 웹페이지 즐겨찾기