nunit - .NET 是 Assert.Equals 抛出异常"assert不应用于断言"

  显示原文与译文双语对照的内容
124 2

我最近尝试在编写新的NUnit测试时使用 Assert.Equals() 方法。在执行这里方法时,这里方法抛出一个Assert.Equals should not be used for Assertions.乍看起来,这有点令人困惑。.这里正在做什么?

时间:原作者:0个回答

53 4

Assert 是继承自 system 。object的static 类,因为所有类都隐式在 C# 中进行。System.Object 实现了以下方法:

static bool Equals(object a, object b)

assert的方法用于相等比较的方法是 Assert.AreEqual() 方法。因此,在 单元测试 中通过 assert 类调用 Object.Equals() 方法当然是错误的。为了避免这个错误,可以以避免混淆,使用一个引发异常的实现在 assert 类中隐藏了 Object.Equals以下是实现:

///<summary>
///The Equals method throws an AssertionException. This is done 
///to make sure there is no mistake by calling this function.
///</summary>
///<param name="a"></param>
///<param name="b"></param>
 [EditorBrowsable(EditorBrowsableState.Never)]
 public static new bool Equals(object a, object b)
 {
//TODO: This should probably be InvalidOperationException
 throw new AssertionException("Assert.Equals should not be used for Assertions");
 }

当然,异常消息本身很混乱,但至少它让你知道你已经完成了错误的事情。

原作者:
...