J'ai dans mon test de la suite de test qui va quelque chose comme ceci:
[Fact]
public void VerifySomeStuff()
{
var stuffCollection = GetSomeStuff();
Assert.Equal(1, stuffCollection.Count());
}
Ce test fonctionne comme je le pense, mais quand je le lance xUnit imprime un message d'avertissement:
avertissement xUnit2013: N'utilisez pas de faire Valoir.L'égalité() pour vérifier la taille de la collection.
Cependant, aucune alternative n'est suggéré dans l'avertissement, et une recherche sur google me prend le code source dans xUnit pour le test qui vérifie ce message d'avertissement est affiché.
Si Assert.Equal()
n'est pas la bonne façon de vérifier la longueur d'une collection, c'est quoi?
Pour clarifier: je me rends compte que je pouvais "truc" xUnit en émettent pas cet avertissement, par exemple l'extraction d'une variable, ou à l'aide de Assert.True(stuff.Count() == 1)
à la place. Le dernier est juste hacky, et l'ancien se sent comme si xUnit, par exemple, en essayant d'éviter de multiples itérations de l' IEnumerable<T>
, alors ce n'est pas la voie à suivre (parce que je vais obtenir compilateur conseils à ce sujet séparément, si c'est un problème), et xUnit lui-même ne devriez jamais avoir à évaluer la saisie de plus d'une fois (en fait, il sera probablement obtenir le même signal d'entrée, quelle que soit la variable d'extraction, car de la façon dont C# appel de fonction œuvres).
Donc, je ne suis pas seulement intéressé par la suppression de cet avertissement de mon résultat. Une réponse à ma question explique aussi pourquoi cet avertissement est inclus dans la bibliothèque, en premier lieu, et pourquoi, quelle que soit l'approche que je devrais utiliser à la place, c'est mieux.