> 백엔드 개발 > C++ > 사용자 정의 클래스 목록과 같은 복잡한 매개변수를 XUnit 이론에 어떻게 전달할 수 있습니까?

사용자 정의 클래스 목록과 같은 복잡한 매개변수를 XUnit 이론에 어떻게 전달할 수 있습니까?

Patricia Arquette
풀어 주다: 2025-01-02 14:10:38
원래의
297명이 탐색했습니다.

How Can I Pass Complex Parameters, Like Lists of Custom Classes, to XUnit Theories?

복잡한 매개변수를 이론에 전달

문제:

XUnit을 사용하면 InlineData 속성을 사용하여 매개변수화된 테스트를 생성할 수 있습니다. 그러나 사용자 정의 클래스 목록과 같은 복잡한 매개변수를 처리할 때 문제가 발생합니다.

답변:

XUnit은 MemberData를 포함한 다양한 데이터 속성을 제공합니다. IEnumerable를 반환하는 속성을 구현하면 컬렉션의 각 항목을 단일 이론 메서드 호출에 대한 매개 변수로 압축을 풀 수 있습니다.

MemberData 예:

public class MyClass { public string Name { get; set; } }

public static void WriteReportsToMemoryStream(
    IEnumerable<MyClass> listReport,
    MemoryStream ms,
    StreamWriter writer) { ... }

[Theory, MemberData(nameof(Data))]
public void WriteReports(IEnumerable<MyClass> listReport)
{
    using (var ms = new MemoryStream())
    {
        using (var writer = new StreamWriter(ms))
        {
            WriteReportsToMemoryStream(listReport, ms, writer);
            // ...
        }
    }
}

public static IEnumerable<object[]> Data => new[]
{
    new object[] { new[] { new MyClass { Name = "Item1" } } },
    new object[] { new[] { new MyClass { Name = "Item2" } } },
};
로그인 후 복사

Data 속성은 열거 가능한 객체 배열을 생성합니다. 여기서 각 배열은 WriteReports에 대한 매개 변수 집합에 해당합니다. 방법입니다.

위 내용은 사용자 정의 클래스 목록과 같은 복잡한 매개변수를 XUnit 이론에 어떻게 전달할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿