gpt4 book ai didi

c# - Assert.AreEquals 调用 object.Equals,无论 IEquatable 实现如何

转载 作者:行者123 更新时间:2023-12-02 05:14:43 24 4
gpt4 key购买 nike

今天在编写和运行一些测试时,我发现即使我的类实现了 IEquatable<MyClass>接口(interface),一个Assert.AreEqual(instanceOfMyClass, anotherInstance);结果是错误的。

事实证明,无论如何,Assert.AreEquals来电 object.Equals(object obj)而不是正确的 MyClass.Equals(MyClass obj)功能。

假设有一个逻辑原因,它是什么?

最佳答案

您可以尝试在相关类上重载 == 并使用使用 equals 运算符的通用“Assert.AreEqual< T>”重载。

就我个人而言,我更喜欢使用 Assert.AreEqual(true,InstanceA.Equals(InstanceB)) 因为这肯定会使用您的 Equals 方法;当然,这假设您已经对 Equals 方法进行了单元测试,并且 100% 确定它有效:)

至于为什么Assert使用object.Equals,我想我们得问类的设计者了:)但我想原因之一是如果你的Equals方法有bug,你的测试结果就不好。

关于c# - Assert.AreEquals 调用 object.Equals,无论 IEquatable 实现如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625616/

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