我有一个非常奇怪的行为,我无法解释。
我有以下课程:
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;
}
}
我添加了一个单元测试来测试该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);
}
但是,当我运行单元测试时,将两个对象的类型与以下错误进行比较时失败:
Assert.AreEqual 失败。预期:<MyProject.NHibernate.Project>。实际:<MyProject.NHibernate.Project>。
为什么断言失败?
Assert.AreEqual不是仅对对象的属性进行断言吗?
根据文档:
Assert.AreEqual 方法(对象,对象)
验证两个指定对象是否相等。如果对象不相等,则断言失败。
Assert.AreSame 方法
验证指定的对象变量是否引用相同的对象。