【问题标题】:c# Assert.AreEqual not workngc# Assert.AreEqual 不起作用
【发布时间】:2015-06-29 08:08:27
【问题描述】:

我在 Visual Studio 上进行单元测试。

尝试测试一个简单的调用

Assert.AreEqual(2, 1, 2);

运行测试时,它说通过?不应该失败吗?

【问题讨论】:

标签: c# unit-testing mstest assert


【解决方案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.comAssert.AreEqual(2,1) 更易读的2.Should().Be(1) 语句
  • @AlexeiLevenkov:完全同意,FA 是我的标准 nuget 包之一;)我更多地指的是 MSTest 内部的内容,但确实 FA 更具表现力并提供更多比较。
  • @JeroenVannevel。是的,非常主观。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-16
  • 2015-05-29
  • 2018-05-14
  • 1970-01-01
  • 2012-10-07
  • 2014-04-19
相关资源
最近更新 更多