Comment Testez-vous que IEnumerable a tous les articles de SomeClass de classe dans MbUnit?
-
22-08-2019 - |
Question
Comment Testez-vous qu'un IEnumerable a tous les articles de SomeClass de classe MbUnit?
Je l'ai utilisé une fois de Visual Studio Unit Test Framework et trouvé CollectionAssert.AllAreInstancesOfType
ou quelque chose à vérifier.
Mais comment puis-je le fais dans MbUnit?
La solution
Je ne vois rien dans le MBUnit CollectionAssert
classe qui pourrait vous aider ici
Vous pouvez facilement écrire votre propre bien (non testé).
public class MyCollectionAssert
{
public void CollectionAssert(IEnumerable source, Predicate<object> assertion)
{
foreach(var item in source)
{
Assert.IsTrue(assertion(item));
}
}
public void AllAreInstancesOfType(IEnumerable source, Type type)
{
return CollectionAssert(source, o => o.GetType() == type);
}
}
Je suppose que vous voulez dire en fait IEnumerable et non IEnumerable<SomeClass>
que le compilateur applique la sécurité de type. Pour utiliser cet appel de méthode d'extension:
MyCollectionAssert.AllAreInstancesOfType(myList, typeof(SomeClass));
Autres conseils
Jeff Brown , le développeur principal du projet Gallio a ouvert une question pour cette demande. Nous allons mettre en œuvre quelques affirmations dédiées: Assert.ForAll
et Assert.Exists
. Ils devraient être disponibles dans la prochaine version de Gallio / MbUnit (v3.1), mais vous serez en mesure de les utiliser plus tôt en téléchargeant la construction quotidienne dans quelques jours (Restez à l'écoute).
Edit:
A partir de Gallio / MbUnit v3.1.213 , vous pouvez utiliser Assert.ForAll<T>(IEnumerable<T>, Predicate<T>)
.
[Test]
public void AllMyObjectsShouldBeStrings()
{
var list = GetThemAll();
Assert.ForAll(list, x => x.GetType() == typeof(string));
}