为什么或如何将NUnit方法与ICollection <t> </t>一起使用

时间:2009-11-24 14:39:09

标签: c# unit-testing nunit

部分NUnit的Assert方法被重载使用ICollection但不使用ICollection<T>,因此您无法使用它们。

这周围有吗?哎呀,我做了些蠢事吗?

我不得不放弃使用Assert.AreEqual而不是专门的方法,这使得我的测试很难看。

有什么建议吗?

修改

感谢您的回复。 NUnit的That方法看起来很有趣,所以我会在以后再研究它。

Mark正确地提到了这一点,但NUnit Collection Asserts非常出色。我最近在一些新的测试中使用它们,发现它们非常适合使用。

3 个答案:

答案 0 :(得分:9)

我不知道这是否是您正在寻找的,但对于通用集合而不是使用:

Assert.Contains(member, list);

我用:

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

我发现几乎可读。

答案 1 :(得分:8)

ICollectionICollection<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的缩写。那......