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

Fin*_*las 11 c# nunit unit-testing

一些NUnitAssert方法被重载使用ICollection但没有使用ICollection<T>,因此你不能使用它们.

有没有办法解决?哎呀,我做蠢事吗?

我不得不退回使用Assert.AreEqual而不是专门的方法,并使我的测试变得丑陋.

有什么建议?

编辑:

谢谢你的回复.ThatNUnit 的方法看起来很有趣,所以我会在以后再研究它.

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

Ria*_*its 9

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

Assert.Contains(member, list);
Run Code Online (Sandbox Code Playgroud)

我用:

Assert.That(list.Contains(member));
Run Code Online (Sandbox Code Playgroud)

我发现几乎可读.


Amy*_*y B 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.


Mar*_*son 7

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

Expect(actual, Is.EquivalentTo(expected));
Run Code Online (Sandbox Code Playgroud)

查看文档应该为您提供适用于集合的约束的语法.

这是一个链接(这是版本2.5.2)

NB Expect只是Assert的缩写.那...