Passer des paramètres complexes à [Théorie]
XUnit fournit l'attribut InlineData, qui permet aux utilisateurs de générer plusieurs tests avec des paramètres de données simples. Cependant, lorsqu'il s'agit de paramètres plus complexes, tels qu'une liste de classes personnalisées, une approche différente est nécessaire.
Attributs MemberData et ClassData
XUnit propose plusieurs options pour transmettre des paramètres complexes aux méthodes [Théorie]. Une approche consiste à utiliser l’attribut MemberData. Cet attribut demande à XUnit d'exécuter une propriété qui renvoie un IEnumerable
Une autre option consiste à utiliser l'attribut ClassData. ClassData fonctionne de manière similaire à MemberData mais permet de partager des générateurs de données entre des tests dans différentes classes ou espaces de noms. Il sépare également les « générateurs de données » des méthodes de test réelles.
Exemple ClassData avec prise en charge des membres statiques
Pour utiliser ClassData avec la prise en charge des membres statiques, vous pouvez définir un classe avec une propriété statique renvoyant IEnumerable
public class IndexOfData { public static IEnumerable<object[]> SplitCountData => new List<object[]> { new object[] { "hello world", 'w', 6 }, new object[] { "goodnight moon", 'w', -1 } }; }
Dans votre classe de test, vous Vous pouvez ensuite appliquer l'attribut [Théorie] et spécifier le membre statique à l'aide de la propriété MemberType de l'attribut :
[Theory, MemberData(nameof(IndexOfData.SplitCountData), MemberType = typeof(IndexOfData))] public void IndexOf(string input, char letter, int expected) {...}
En tirant parti de ces attributs, vous pouvez transmettre des paramètres complexes à vos méthodes [Théorie], vous permettant ainsi de tester efficacement divers scénarios.
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!