


Comment puis-je transmettre des paramètres complexes aux méthodes [Théorie] de XUnit ?
Jan 04, 2025 pm 02:50 PMPasser 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<object[]>. Chaque objet[] dans IEnumerable sera "décompressé" en tant que paramètres pour un seul appel à votre méthode [Theory].
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<object[]>, comme indiqué ci-dessous :
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Gulc: Cibliothèque C construite à partir de zéro

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Utilisation distincte et partage de phrases

Quel est le multiple commun minimum du diviseur commun maximal d'une fonction de langue C?
