2009-03-30 7 views
1

私はカスタムコレクションタイプのデータを持っています。このデータは、3つのプロパティ(例えば、コレクションはA、B、C、例えばの順序を維持しなければならないMbUnit:カスタムオーダーコレクションのテスト

class Data 
{ 
    public int PropertyA() { get; set; } 
    public int PropertyB() { get; set; } 
    public int PropertyC() { get; set; } 
} 

:次の例を取る

[A, B, C] 
[1, 2, 5] 
[1, 3, 3] 
[1, 3, 4] 
[1, 4, 1] 
[2, 1, 2] 
[3, 3, 1] 
[3, 4, 2] 

私はこの順序がで維持されることを保証するためにいくつかのテストを書きたいのですが通常の疑わしい追加と削除操作によるコレクション私はGallioとMbUnit 3を使用しています。属性を使ってこれを行う簡単な方法が必要であると私は考えています。何か案は? MbUnitのv2ので

答えて

1

MbUnit v3は、新しい便利Assert.Sorted方法があります。評価するために列挙インスタンスを渡すだけです。列挙されたオブジェクトがIEquatableを実装する場合、すべてが自動です。

[Test] 
public void MySimpleTest 
{ 
    var array = new int[] { 1, 5, 9, 12, 26 }; 
    Assert.Sorted(array); 
} 

はそうでない場合、あなたはまだ(たとえば、新しい便利なstructural equality comparer付き)カスタム比較基準を指定する可能性があります。

[Test] 
public void MyComplexTest 
{ 
    var array = new Foo[] { new Foo(123), new Foo(456), new Foo(789) }; 
    Assert.Sorted(array, new StructuralEqualityComparer<Foo> 
    { 
     { x => x.Value } 
    }); 
} 

詳細については、Gallio/MbUnit API doc referenceをご覧ください。

0

、あなたは

+0

残念ながら、これはMbUnit v3ではなくなっているようです。助けてくれてありがとう、私は正しい答えであなたに報酬を与えるでしょう! – grover

+0

私はこれを新しいContractVerifiers(http://code.google.com/p/mb-unit/source/browse/trunk/v3/src/MbUnit/Samples/MbUnit.Samples/ContractVerifiers/Collection/)を使ってv3で実装します。 SampleCollection.Test.cs) –

+0

devグループ(http://groups.google.com/group/gallio-dev)で質問してみてください。おそらくv3に置き換えがあります。 –

1

ヤンTrevinはMbUnitのv3のための "CollectionContract" に取り組んできましたけれども、それはそれMbUnitのV3を見つけることができません。.. CollectionOrderFixtureを使用することができます。注文されたコレクションを処理できるとは思えませんが、順序不変を記述する適切な比較代理人があれば、その機能を追加することに興味があると思います。

このサンプルは、MbUnit v3.0.6のMbUnit.Samplesプロジェクトの "SampleCollectionTest"フィクスチャで見つけることができます。

私はあなたが、彼はそれを見ることができますmbunitdevメーリングリストにあなたのアイデアを投稿することをお勧めします。http://groups.google.com/group/mbunitdev

+0

ありがとう、私は後で私の要求を投稿します。多分、グループの方が良いアイデアを持っているかもしれません。 – grover