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 容差

如何用 FluentAssertions 替换 Assert.Fail()

使用 StreamWriter 不起作用 \n (C#)

为啥 C++ CLI 索引属性在 C# 中不起作用?

C# SocketIOClientDotNet 似乎不起作用