Fin*_*las 11 c# nunit unit-testing
一些NUnitAssert方法被重载使用ICollection但没有使用ICollection<T>,因此你不能使用它们.
有没有办法解决?哎呀,我做蠢事吗?
我不得不退回使用Assert.AreEqual而不是专门的方法,并使我的测试变得丑陋.
有什么建议?
编辑:
谢谢你的回复.ThatNUnit 的方法看起来很有趣,所以我会在以后再研究它.
Mark正确地提到了这一点,但NUnit Collection Asserts非常出色.我最近在一些新的测试中使用它们,发现它们非常适合使用.
我不知道这是否是您正在寻找的,但对于通用集合而不是使用:
Assert.Contains(member, list);
Run Code Online (Sandbox Code Playgroud)
我用:
Assert.That(list.Contains(member));
Run Code Online (Sandbox Code Playgroud)
我发现几乎可读.
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.
有一组CollectionAsserts,或者您可以从AssertHelper继承您的测试并使用类似的语法
Expect(actual, Is.EquivalentTo(expected));
Run Code Online (Sandbox Code Playgroud)
查看文档应该为您提供适用于集合的约束的语法.
这是一个链接(这是版本2.5.2)
NB Expect只是Assert的缩写.那...