What is the difference between Assert.AreEqual and Assert.AreSame?
It means that AreSame() checks that they are the exact same object - if reference indicate the same object in memory.
AreEqual() checks that objects has equal type and value. Equal objects can exist in two different places in memory.
Assert.AreEqual(a, b)
is the same as Assert.IsTrue(Object.Equals(a, b))
Assert.AreSame(a, b)
is the same as Assert.IsTrue(Object.ReferenceEquals(a, b))
(the only reason I knew is I just figured it out myself a few hours ago today because I needed to do a Assert.IsTrue(Object.ReferenceEquals(a,b))
and thought "I wonder if there is a better way to do this")