Je suis nouveau sur TDD et xUnit, je veux donc tester ma méthode qui ressemble à quelque chose comme:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
Existe-t-il une méthode Assert que je peux utiliser? Je pense que quelque chose comme ça serait bien
List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });
Assert.Exact(expected, actual);
Y a-t-il quelque chose comme ça?
Dans la version actuelle de XUnit (1.5), vous pouvez simplement utiliser
La méthode ci-dessus effectuera une comparaison élément par élément des deux listes. Je ne suis pas sûr que cela fonctionne pour une version antérieure.
la source
Avec xUnit, si vous souhaitez sélectionner les propriétés de chaque élément à tester, vous pouvez utiliser Assert.Collection.
Cela teste le nombre attendu et garantit que chaque action est vérifiée.
la source
Récemment, j'utilisais
xUnit 2.4.0
et desMoq 4.10.1
packages dans mon application asp.net core 2.2.Dans mon cas, j'ai réussi à le faire fonctionner avec un processus en deux étapes:
Définition d'une implémentation de
IEqualityComparer<T>
Passez l'instance de comparateur comme troisième paramètre dans la
Assert.True
méthode:Assert.True(expected, actual, new MyEqualityComparer());
Mais il existe un autre moyen plus agréable d'obtenir le même résultat en utilisant le package FluentAssertions . Il vous permet d'effectuer les opérations suivantes:
Fait intéressant, cela
Assert.Equal()
échoue toujours même lorsque j'ai commandé les éléments de deux listes pour les mettre dans le même ordre.la source