Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Assert.AreEquals调用object.Equals,而与IEquatable实现无关_C#_Visual Studio_Unit Testing - Fatal编程技术网

C# Assert.AreEquals调用object.Equals,而与IEquatable实现无关

C# Assert.AreEquals调用object.Equals,而与IEquatable实现无关,c#,visual-studio,unit-testing,C#,Visual Studio,Unit Testing,今天在编写和运行一些测试时,我发现即使我的类实现了一个IEquatable接口,Assert.AreEqual(instanceOfMyClass,anotherInstance)导致错误 结果表明,不管怎样,Assert.AreEquals都调用object.Equals(object obj)而不是正确的MyClass.Equals(MyClass obj)函数 假设存在逻辑原因,那么原因是什么?您可以尝试在所讨论的类上重载==并使用通用的“Assert.AreEqual”重载,该重载使用e

今天在编写和运行一些测试时,我发现即使我的类实现了一个
IEquatable
接口,
Assert.AreEqual(instanceOfMyClass,anotherInstance)导致错误

结果表明,不管怎样,
Assert.AreEquals
都调用
object.Equals(object obj)
而不是正确的
MyClass.Equals(MyClass obj)
函数


假设存在逻辑原因,那么原因是什么?

您可以尝试在所讨论的类上重载==并使用通用的“Assert.AreEqual”重载,该重载使用equals运算符

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


至于为什么Assert使用object.Equals,我想我们必须询问类的设计者:)但我想一个原因是,如果Equals方法有缺陷,那么测试结果就不好。

我只是通过检查输入类型将其转发到object.Equals中的相关函数。我更多的是问为什么,而不是寻找解决方案