У меня действительно странное поведение, которое я не могу объяснить.
У меня есть следующий класс:
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<Project>();
return project;
}
}
Я добавил Unit Test для тестирования метода 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<Project>(expected, actual);
}
Но когда я запускаю Unit Test, это терпит неудачу при сравнении типа двух объектов со следующей ошибкой:
Ошибка Assert.AreEqual. Ожидаемое: < MyProject.NHibernate.Project > . Фактическое:. & Л; MyProject.NHibernate.Project >
Почему утверждение не работает?
Не Assert.AreEqual, утверждающий только о свойствах объектов?
Согласно документации:
Assert.AreEqual Method (Object, Object)
Проверяет, что два указанных объекта равны. Утверждение терпит неудачу, если объекты не равны.
Метод Assert.AreSame
Проверяет, что указанные переменные объекта относятся к одному и тому же объекту.