3

IEnumerableにMBunitのSomeClassクラスのすべてのアイテムがあることをどのようにテストしますか?

私はかつてVisualStudioの単体テストフレームワークを使用CollectionAssert.AllAreInstancesOfTypeして、それを確認するための何かを見つけました。

しかし、MBunitでそれを行うにはどうすればよいですか?

4

2 に答える 2

1

Gallio プロジェクトの主任開発者であるJeff Brownは、その要求に対してイシューをオープンしました。いくつかの専用アサーションを実装します:Assert.ForAllAssert.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));
}
于 2009-07-05T18:35:35.787 に答える
0

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));
于 2009-07-04T13:49:06.400 に答える