Heim > Backend-Entwicklung > C++ > Wie kann ich komplexe Parameter, wie Listen benutzerdefinierter Klassen, an XUnit Theories übergeben?

Wie kann ich komplexe Parameter, wie Listen benutzerdefinierter Klassen, an XUnit Theories übergeben?

Patricia Arquette
Freigeben: 2025-01-02 14:10:38
Original
307 Leute haben es durchsucht

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

Übergabe komplexer Parameter an Theorien

Problem:

XUnit ermöglicht die Erstellung parametrisierter Tests mithilfe von InlineData-Attributen. Beim Umgang mit komplexen Parametern wie Listen benutzerdefinierter Klassen treten jedoch Herausforderungen auf.

Antwort:

XUnit stellt verschiedene Datenattribute bereit, einschließlich MemberData. Durch die Implementierung einer Eigenschaft, die IEnumerable zurückgibt, kann jedes Element in der Sammlung als Parameter für einen einzelnen Theoriemethodenaufruf entpackt werden.

MemberData-Beispiel:

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" } } },
};
Nach dem Login kopieren

Die Data-Eigenschaft generiert eine Aufzählung von Objektarrays, wobei jedes Array einem Parametersatz für die WriteReports entspricht Methode.

Das obige ist der detaillierte Inhalt vonWie kann ich komplexe Parameter, wie Listen benutzerdefinierter Klassen, an XUnit Theories übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage