IEnumerable<SomeClass> に MBunit のクラス SomeClass のすべての項目があることをテストするにはどうすればよいですか?
-
22-08-2019 - |
質問
IEnumerable に MBunit クラス SomeClass のすべての項目があることをテストするにはどうすればよいですか?
私はかつて Visual Studio Unit Test Framework を使用したことがありますが、 CollectionAssert.AllAreInstancesOfType
またはそれを確認するためのもの。
しかし、MBunit ではどうすればよいでしょうか?
解決
私はCollectionAssert
のクラスここであなたを助けることができること
あなたは簡単に(未テスト)ただし、あなた自身を書くことができます。
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<SomeClass>
IEnumerableを意味していないと仮定します。この拡張メソッド呼び出しを使用するには:
MyCollectionAssert.AllAreInstancesOfType(myList, typeof(SomeClass));
他のヒント
ジェフ・ブラウン, 、Gallio プロジェクトの主任開発者は、 問題 そのリクエストのために。いくつかの専用アサーションを実装します。 Assert.ForAll
そして Assert.Exists
. 。これらは Gallio/MbUnit (v3.1) の次のリリースで利用可能になるはずですが、数日以内にデイリー ビルドをダウンロードすることで、より早く使用できるようになります (しばらくお待ちください)。
編集:から始まる ガリオ/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));
}
所属していません StackOverflow