Assert.AreEqual 如何比较 .net 单元测试中的两个对象?

Dan*_*don 5 .net unit-testing assert vs-unit-testing-framework

我正在为我编写的一些 .net 代码编写单元测试。

我熟悉这样编写代码:

int expected = 10;
int actual = multiplyByTwo(5);
Assert.AreEqual(expected, actual);
Run Code Online (Sandbox Code Playgroud)

在参数是整数的情况下,很清楚期望代码做什么。

当传入的参数是对象时,代码会做什么?

如果我编写了一个名为 的自定义类MyClass,那么如何控制Assert.AreEqual类型对象的通过和失败时间MyClass

Ren*_*nan 4

官方文档非常简洁并且没有解释它,所以我相信如果对象不是基元,那么将比较它们的引用。

也就是说,对同一对象的两个引用将被评估为相等;同一对象的两个克隆将被评估为不同。除非您重载Equals()这些对象所属类的实例方法,或==该类的运算符。

另请参阅里德·科普西的回答。