代码之家  ›  专栏  ›  技术社区  ›  Finglas

为什么或如何在ICollection中使用nunit方法<t>

  •  11
  • Finglas  · 技术社区  · 15 年前

    一些 NUnit 的断言方法被重载以使用 ICollection 但不是 ICollection<T> 因此你不能使用它们。

    这附近还有吗?见鬼,我在做什么蠢事吗?

    我得回去用了 Assert.AreEqual 而不是专门的方法,它让我的测试难看。

    有什么建议吗?

    编辑:

    感谢您的回复。这个 That 修女的方法似乎很有趣,所以我以后再研究一下。

    马克正确地提到了这一点,但是 NUnit Collection Asserts 很优秀。我最近在一些新的测试中使用了它们,发现它们非常适合使用。

    3 回复  |  直到 14 年前
        1
  •  8
  •   Amy B    15 年前

    ICollection ICollection<T> 是不同的契约-一个不继承另一个。

    http://msdn.microsoft.com/en-us/library/system.collections.icollection_members.aspx http://msdn.microsoft.com/en-us/library/y2fx0ty0.aspx

    如果您有一个通用集合,可以调用 ToList() 在它上面得到一个 List<T> ,这恰好实现了非泛型 集合 也。然后在nunit断言方法中使用该列表。

        2
  •  9
  •   Rian Schmits    15 年前

    我不知道这是否是您要查找的,但对于一般集合,而不是使用:

    Assert.Contains(member, list);
    

    我使用:

    Assert.That(list.Contains(member));
    

    我发现它几乎是可读的。

        3
  •  7
  •   Mark Dickinson    15 年前

    有一组collectionassert,或者您可以从asserthelper继承测试并使用类似的语法

    Expect(actual, Is.EquivalentTo(expected));
    

    看一下文档,您应该了解应用于集合的约束的语法。

    这里有一个 link (这是2.5.2版)

    注意,expect只是assert的简写。