Problème :
XUnit permet de créer des tests paramétrés à l'aide des attributs InlineData. Cependant, des défis surviennent lorsqu'il s'agit de paramètres complexes, tels que des listes de classes personnalisées.
Réponse :
XUnit fournit divers attributs de données, notamment MemberData. En implémentant une propriété qui renvoie IEnumerable
Exemple de données de membre :
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" } } }, };
La propriété Data génère un énumérable de tableaux d'objets, où chaque tableau correspond à un ensemble de paramètres pour les WriteReports méthode.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!