IEnumerableにMBunitのSomeClassクラスのすべてのアイテムがあることをどのようにテストしますか?
私はかつてVisualStudioの単体テストフレームワークを使用CollectionAssert.AllAreInstancesOfType
して、それを確認するための何かを見つけました。
しかし、MBunitでそれを行うにはどうすればよいですか?
IEnumerableにMBunitのSomeClassクラスのすべてのアイテムがあることをどのようにテストしますか?
私はかつてVisualStudioの単体テストフレームワークを使用CollectionAssert.AllAreInstancesOfType
して、それを確認するための何かを見つけました。
しかし、MBunitでそれを行うにはどうすればよいですか?
Gallio プロジェクトの主任開発者であるJeff Brownは、その要求に対してイシューをオープンしました。いくつかの専用アサーションを実装します:Assert.ForAll
とAssert.Exists
. これらは、Gallio/MbUnit (v3.1) の次のリリースで利用可能になるはずですが、数日後にデイリー ビルドをダウンロードすることで、より早く使用できるようになります (ご期待ください)。
編集: Gallio/MbUnit v3.1.213
から開始すると、 を使用できますAssert.ForAll<T>(IEnumerable<T>, Predicate<T>)
。
[Test]
public void AllMyObjectsShouldBeStrings()
{
var list = GetThemAll();
Assert.ForAll(list, x => x.GetType() == typeof(string));
}
MBUnitCollectionAssert
クラスには、ここで役立つものは何もありませんでした。
あなたは簡単にあなた自身を書くことができます(テストされていません)。
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);
}
}
私はあなたが実際にIEnumerableを意味IEnumerable<SomeClass>
し、コンパイラが型安全性を強制するものではないと仮定します。この拡張メソッド呼び出しを使用するには、次のようにします。
MyCollectionAssert.AllAreInstancesOfType(myList, typeof(SomeClass));