2009-07-04 3 views
3

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

私はかつてVisual Studio Unit Test Frameworkを使用しており、それを確認するためにCollectionAssert.AllAreInstancesOfTypeか何かを見つけました。

しかし、私はMBunitでどうしますか?

+1

「SomeClassまたは派生型」とはどういう意味ですか? SomeOtherClassがSomeClassから派生しない限り、IEnumerable はSomeOtherClassを持つことができないためです。 –

答えて

0

私はあなたが簡単にかかわらず、(未テスト)自分自身を書くことができ

ここであなたを助けることができる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)); 
1

Jeff Brownを、Gallioのプロジェクトのリード開発者はその要求に対してissueをオープンしました。私たちはいくつかの専用アサーションを実装するつもりです: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)); 
} 
関連する問題