Maison > développement back-end > C++ > Comment puis-je transmettre des paramètres complexes aux méthodes [Théorie] de XUnit ?

Comment puis-je transmettre des paramètres complexes aux méthodes [Théorie] de XUnit ?

DDD
Libérer: 2025-01-04 14:50:39
original
292 Les gens l'ont consulté

How Can I Pass Complex Parameters to XUnit's [Theory] Methods?

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. 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, 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 }
        };
}
Copier après la connexion

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) {...}
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal