gpt4 book ai didi

.net - NUnit 的 Assert.Equals 抛出异常 "Assert.Equals should not be used for assertions"

转载 作者:行者123 更新时间:2023-12-03 04:31:19 35 4
gpt4 key购买 nike

我最近在编写新的 NUnit 测试时尝试使用 Assert.Equals() 方法。执行此方法时会抛出一个 AssertionException ,说明Assert.Equals 不应该用于断言。 乍一看这有点令人困惑。这是怎么回事?

最佳答案

Assert 是一个继承自 System.Object 的静态类,就像所有类在 C# 中隐式执行的那样。 System.Object 实现以下方法:

static bool Equals(object a, object b)

Assert 上用于相等比较的方法是 Assert.AreEqual()方法。因此,在单元测试中通过Assert类调用Object.Equals()方法肯定是一个错误。为了防止这种错误并避免混淆,NUnit 的开发人员故意将 Object.Equals 隐藏在 Assert 类中,并实现了抛出异常的实现。这是实现:

/// <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");
}

当然,异常消息本身令人困惑,但至少它让您知道您做错了某事

关于.net - NUnit 的 Assert.Equals 抛出异常 "Assert.Equals should not be used for assertions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11584429/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com