Je me trouve besoin de beaucoup de ce type de logique ces derniers temps: Je vois que Nunit offre a.some code> et a. Tout code>, mais je ne vois rien comme a.one code>. Quelle est la meilleure façon d'accomplir cela sans que deux affirmations? P> p>
5 Réponses :
Vous pouvez essayer quelque chose comme ceci:
Assert.That(collection.Items, Is.EquivalentTo(new List<object>() {expected_item}));
Bonne réponse. Je me demande toujours s'il n'y a pas de contrainte qui me cache quelque part qui fait ce que je veux, bien que ... il semble assez naturel, non?
Eh bien pas vraiment naturel, car une liste contient naturellement n'importe quelle quantité d'éléments, et si vous n'attendez qu'un seul, il défait le but d'une liste :)
@Postman - Il est parfaitement naturel et très courant d'attendre exactement un article dans une liste (ou, en général, un iNeumable) pour un scénario de test spécifique i>.
Je préfère votre réponse éditée car la première réponse ne jetterait pas une assertionException, qui peut être déroutant imo (ressemble à un bug inattendu dans le code de test).
Que diriez-vous de pourquoi il ne suffit pas pour vous? p> p>
En raison du mauvais message d'erreur lorsque le test échoue. Si le comte était différent de 1 ou i> l'article n'a pas été trouvé dans la collection, le message d'erreur serait simplement "attendu: vrai; mais a été: faux" - inutile pour voir rapidement ce qui a mal tourné.
Si items La propriété a un indexeur, vous pouvez utiliser
Assert.AreEqual(collection.Items[0], expected);
Ne confirme pas qu'il y a exactement un élément
à partir de Nunit 2.6 (pas autour de la question lorsque cette question a été posée): a.exactly code> "applique une contrainte à chaque élément dans une collection, succédant si le nombre spécifié d'articles réussira. " [1] p> p>
Je pense que cela ne parvient pas à vérifier que la collection dispose d'un article totalement total, selon le code OP original.
Cette assertion ne vérifie pas, si le nombre total de la collection est égal à un ou non.
Je pense que la meilleure façon de vérifier qu'il n'y a qu'un seul point de la collection, c'est Comment obtiendriez le meilleur message d'erreur en cas de défaillance.
Le deuxième moyen serait de la réponse éditée de @ Bubblewrap, qui fait le travail d'affirmation mais obtiendrait la même erreur si votre collection a plus d'un élément ou que l'élément n'est pas l'attendu. P> P>