我有一个自定义的数据集合类型。该数据按三个属性的顺序排序,例如以下面的例子为例:

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 和 MbUnit 3,我认为一定有一种简单的方法可以利用它们的属性来做到这一点,我只是现在不明白。有任何想法吗?

有帮助吗?

解决方案

MbUnit v3 有一个新的有用的 断言已排序 方法。您只需要传递枚举实例即可进行评估。如果枚举对象实现了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文档参考 更多细节。

其他提示

晏Trevin一直工作在一个 “CollectionContract” 为MbUnit的V3。我不认为它可以处理有序集合,但现在我相信他会有兴趣在增加这种能力给出一个合适的比较的委托来形容排序不变。

您会发现在MbUnit的v3.0.6的MbUnit.Samples项目的“SampleCollectionTest”夹具的这个例子。

我建议你发布你的想法到mbunitdev邮件列表,在那里他将看到: HTTP: //groups.google.com/group/mbunitdev

在 MbUnit v2 中,您可以使用 收藏订购夹具..但找不到 MbUnit v3

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top