Maison >développement back-end >C++ >Comment transmettre des paramètres complexes aux tests unitaires basés sur la théorie dans xUnit ?
Les frameworks de tests unitaires comme xUnit offrent des fonctionnalités pratiques pour les tests basés sur les données. Cependant, lorsque les paramètres de la méthode testée sont des structures de données complexes, telles que des listes de classes personnalisées, l'attribut InlineData est insuffisant.
Pour relever ce défi, xUnit propose plusieurs options pour transmettre des paramètres complexes à des tests unitaires fondés sur la théorie. L'une de ces options est l'attribut MemberData.
L'attribut MemberData vous permet de spécifier une propriété ou une méthode qui renvoie IEnumerable
[Theory, MemberData(nameof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... } public static IEnumerable<object[]> MyCustomData() { // ... }
Avant xUnit 2.0, une autre alternative existait : ClassData. Semblable à MemberData, ClassData permettait de partager des générateurs de données entre des tests dans différentes classes et espaces de noms. Par exemple :
public class MyCustomTests { [Theory, ClassData(typeof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... } } public class MyCustomData : IEnumerable<object[]> { // ... }
xUnit 2.0 a introduit une version surchargée de MemberData qui permet l'utilisation directe de membres statiques d'autres classes. L'exemple ClassData ci-dessus peut être réécrit en utilisant cette surcharge :
[Theory, MemberData(nameof(MyCustomData.GetData), MemberType = typeof(MyCustomData))] public void WriteReportsToMemoryStream(...) { // ... }
Ces exemples illustrent les différentes manières de transmettre des paramètres complexes à des tests unitaires basés sur la théorie dans xUnit à l'aide de MemberData, ClassData, et leurs surcharges respectives. En tirant parti de ces attributs, les développeurs peuvent facilement générer des données pour tester des méthodes qui fonctionnent sur des structures de données complexes.
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!