部分NUnit
的Assert方法被重载使用ICollection
但不使用ICollection<T>
,因此您无法使用它们。
这周围有吗?哎呀,我做了些蠢事吗?
我不得不放弃使用Assert.AreEqual
而不是专门的方法,这使得我的测试很难看。
有什么建议吗?
修改
感谢您的回复。 NUnit的That
方法看起来很有趣,所以我会在以后再研究它。
Mark正确地提到了这一点,但NUnit Collection Asserts非常出色。我最近在一些新的测试中使用它们,发现它们非常适合使用。
答案 0 :(得分:9)
我不知道这是否是您正在寻找的,但对于通用集合而不是使用:
Assert.Contains(member, list);
我用:
Assert.That(list.Contains(member));
我发现几乎可读。
答案 1 :(得分:8)
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>
,这恰好也可以实现非通用ICollection
。然后在NUnit Assert方法中使用该List。
答案 2 :(得分:7)
有一组CollectionAsserts,或者您可以从AssertHelper继承您的测试并使用类似
的语法Expect(actual, Is.EquivalentTo(expected));
查看文档应该为您提供适用于集合的约束的语法。
这是link(这是版本2.5.2)
N.B。 Expect只是Assert的缩写。那......