私は説明できない本当に奇妙な行動をしています。
私は次のクラスを持っています:
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);
}
しかし、単体テストを実行すると、2つのオブジェクトのタイプを比較すると失敗し、次のエラーが発生します。
Assert.AreEqualが失敗しました。期待されるもの:<MyProject.NHibernate.Project>。実際:<MyProject.NHibernate.Project>。
アサーションが失敗するのはなぜですか?
Assert.AreEqualは、オブジェクトのプロパティに対してのみアサートしていませんか?
ドキュメントによると:
Assert.AreEqualメソッド(オブジェクト、オブジェクト)
指定された2つのオブジェクトが等しいことを確認します。オブジェクトが等しくない場合、アサーションは失敗します。
Assert.AreSameメソッド
指定されたオブジェクト変数が同じオブジェクトを参照していることを確認します。