【问题标题】:MbUnit: Testing custom ordered collectionMbUnit:测试自定义有序集合
【发布时间】:2009-03-30 21:40:28
【问题描述】:

我有一个自定义的数据收集类型。该数据按三个属性按顺序排序,例如举个例子:

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,我认为必须有一种简单的方法来使用它们的属性来做到这一点,我只是现在不明白。有什么想法吗?

【问题讨论】:

    标签: c# unit-testing sorting collections mbunit


    【解决方案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 了解更多详情。

    【讨论】:

      【解决方案2】:

      Yann Trevin 一直致力于 MbUnit v3 的“CollectionContract”。我不认为它现在可以处理有序集合,但我相信他有兴趣添加该功能,因为有适当的比较委托来描述排序不变量。

      您将在 MbUnit v3.0.6 中 MbUnit.Samples 项目的“SampleCollectionTest”夹具中找到一个示例。

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

      【讨论】:

      • 谢谢,我稍后会在那里发布我的请求。也许小组也有更好的主意。
      【解决方案3】:

      在 MbUnit v2 中,您可以使用 CollectionOrderFixture.. 但在 MbUnit v3 中找不到它

      【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多