Assert.AreEqual schlägt fehl, obwohl dies nicht der Fall sein sollte
Ich habe ein wirklich komisches Verhalten, das ich nicht erklären kann.
Ich habe folgende Klasse:
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
Und eine Methode, die a zurückgibtProject
Objekt:
public Project GetByName(string Name)
{
using (ISession session = NHibernateHelper.OpenSession())
{
Project project = session.CreateCriteria(typeof(Project))
.Add(Restrictions.Eq("Name", Name))
.UniqueResult<Project>();
return project;
}
}
Ich habe einen Unit Test hinzugefügt, um das zu testenGetByName
Methode:
[TestMethod]
public void TestGetByName()
{
IProjectsRepository projectRepository = new ProjectsRepository();
var expected = new Project { Id = 1000, Name = "Project1" };
var actual = projectRepository.GetByName(expected.Name);
Assert.AreEqual<Project>(expected, actual);
}
Wenn ich den Komponententest durchführe, schlägt der Vergleich des Typs der beiden Objekte mit dem folgenden Fehler fehl:
Assert.AreEqual fehlgeschlagen. Erwartet: <MyProject.NHibernate.Project>. Tatsächlich: <MyProject.NHibernate.Project>.
Warum schlägt die Behauptung fehl?
NichtAssert.AreEqual nur auf die Eigenschaften der Objekte behaupten?
Nach der Dokumentation:
Assert.AreEqual-Methode (Objekt, Objekt)
Überprüft, ob zwei angegebene Objekte gleich sind. Die Behauptung schlägt fehl, wenn die Objekte nicht gleich sind.
Assert.AreSame-Methode
Überprüft, ob angegebene Objektvariablen auf dasselbe Objekt verweisen.