1

カスタム収集タイプのデータがあります。このデータは、3つのプロパティで並べ替えられています。たとえば、次の例を見てください。

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

コレクションは、A、B、Cの順序を維持する必要があります。例:

[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とMbUnit3を使用していますが、これらの属性を使用してこれを行う簡単な方法があるはずですが、今はわかりません。何か案は?

4

3 に答える 3

1

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

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

それ以外の場合でも、カスタムの比較基準を指定する可能性があります (たとえば、新しい便利な構造的等値比較子を使用)。

[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 ドキュメント リファレンスをご覧ください。

于 2009-06-02T12:27:50.170 に答える
1

Yann Trevin は、MbUnit v3 の「CollectionContract」に取り組んでいます。今のところ、順序付けされたコレクションを処理できるとは思いませんが、順序不変条件を記述する適切な比較デリゲートが与えられれば、彼はその機能を追加することに興味があると確信しています。

この例は、MbUnit v3.0.6 の MbUnit.Samples プロジェクトの "SampleCollectionTest" フィクスチャにあります。

あなたのアイデアを mbunitdev メーリング リストに投稿することをお勧めします: http://groups.google.com/group/mbunitdev

于 2009-04-01T07:11:17.690 に答える
0

MbUnit v2 ではCollectionOrderFixtureを使用できますが、MbUnit v3 では見つかりません

于 2009-03-30T23:02:59.073 に答える