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
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" } } }, };
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!