c# Assert.AreEqual 不起作用
Posted
技术标签:
【中文标题】c# Assert.AreEqual 不起作用【英文标题】:c# Assert.AreEqual not workng 【发布时间】:2015-06-29 08:08:27 【问题描述】:我在 Visual Studio 上进行单元测试。
尝试测试一个简单的调用
Assert.AreEqual(2, 1, 2);
运行测试时,它说通过?不应该失败吗?
【问题讨论】:
您有什么理由不使用 Assert.AreEqual(2, 1)?指定三个数字可让您指定检查的准确性。 msdn.microsoft.com/en-us/library/… 【参考方案1】:你正在用double delta=2
调用Assert.AreEqual Method (Double, Double, Double),所以实际上 2 和 1 之间的差小于 2。
你可能想要
Assert.AreEqual(2,1, "Expected 0", 2);
【讨论】:
我认为这可以说是更好的答案,因为它不仅描述了原因,而且还显示了修复。 +1【参考方案2】:https://msdn.microsoft.com/en-us/library/ms243458.aspx
Assert.AreEqual(double, double, double)
中的第三个参数指定相等的准确度。您的代码询问“1 之 2 中的 2”,这肯定是。
【讨论】:
两个补充: 1. 我真的鼓励 NUnit 而不是内置的 Visual Studio 单元测试框架。 2.Assert
没有内置的扩展方法来测试任意参数列表,但编写一个非常容易(我有一个自制的小包,里面有很多东西,比如 Assert.AllEqual() , Assert.NoneEqual 等)试一试!
关于您的附录: 1. 非常主观。 MSTest 在大多数情况下都非常好。如果您要使用第三方测试框架,那么您不妨采用 xUnit.NET,它将在下一个 VS 中替代 MSTest。 2.总是有CollectionAssert。
@JeroenVannevel 还有fluentassertions.com 比Assert.AreEqual(2,1)
更易读的2.Should().Be(1)
语句
@AlexeiLevenkov:完全同意,FA 是我的标准 nuget 包之一;)我更多地指的是 MSTest 内部的内容,但确实 FA 更具表现力并提供更多比较。
@JeroenVannevel。是的,非常主观。以上是关于c# Assert.AreEqual 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Assert.AreEqual(1.0, double.NaN, 1.0) 通过?
NUnit Assert.AreEqual DateTime 容差