IEnumerable<SomeClass> に MBunit のクラス SomeClass のすべての項目があることをテストするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1082224

  •  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));
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top