为什么你不能使用 Assert.Equals
曾经想知道为什么你不能为 Nunit 和 MSTest 使用 Assert.Equals()
。如果你还没有开始,你需要知道你不能使用这种方法。相反,你将使用 Assert.AreEqual()
来比较两个对象的相等性。
这里的原因很简单。与任何类一样,Assert 类继承自 System.Object,它具有公共虚拟 Equals 方法,用于检查给定对象是否等于当前对象。因此,调用 equals 方法将是一个错误,因为在单元测试中,你将比较两个与 Assert 类无关的对象。因此,Nunit 和 MSTest 都选择为此目的提供方法 Assert.AreEqual。
此外,为了确保你不会错误地使用 Equals 方法,他们决定抛出异常以警告你,如果你错误地使用了它。
Nunit 实施:
[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");
}