Assert.AreEqual терпит неудачу, в то время как это не должно
У меня действительно странное поведение, которое я не могу объяснить.
У меня есть следующий класс:
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
И метод, который возвращаетProject
объект:
public Project GetByName(string Name)
{
using (ISession session = NHibernateHelper.OpenSession())
{
Project project = session.CreateCriteria(typeof(Project))
.Add(Restrictions.Eq("Name", Name))
.UniqueResult();
return project;
}
}
Я добавил модульный тест для проверкиGetByName
метод:
[TestMethod]
public void TestGetByName()
{
IProjectsRepository projectRepository = new ProjectsRepository();
var expected = new Project { Id = 1000, Name = "Project1" };
var actual = projectRepository.GetByName(expected.Name);
Assert.AreEqual(expected, actual);
}
Но когда я запускаю модульный тест, он не работает при сравнении типа двух объектов со следующей ошибкой:
Assert.AreEqual не удалось. Ожидаемое: <MyProject.NHibernate.Project>, Фактический: <MyProject.NHibernate.Project>.
Почему утверждение неверно?
неAssert.AreEqual утверждая только о свойствах объектов?
Согласно документации:
Метод Assert.AreEqual (Объект, Объект)
Проверяет, что два указанных объекта равны. Утверждение не выполняется, если объекты не равны.
Метод Assert.AreSame
Проверяет, что указанные переменные объекта ссылаются на один и тот же объект.