Assert.AreEqual falha enquanto não deve
Eu tenho um comportamento muito estranho que não posso explicar.
Eu tenho a seguinte classe:
public class Project
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
E um método que retorna umProject
objeto:
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;
}
}
Eu adicionei um teste de unidade para testar oGetByName
método:
[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);
}
Mas quando eu executo o teste de unidade ele falha ao comparar o tipo dos dois objetos com o seguinte erro:
Assert.AreEqual falhou. Esperado: <MyProject.NHibernate.Project>. Real: <MyProject.NHibernate.Project>.
Por que a afirmação está falhando?
Não éAssert.AreEqual afirmando apenas as propriedades dos objetos?
De acordo com a documentação:
Método Assert.AreEqual (Object, Object)
Verifica se dois objetos especificados são iguais. A declaração falhará se os objetos não forem iguais.
Método Assert.AreSame
Verifica se as variáveis de objeto especificadas se referem ao mesmo objeto.