Assert.AreEqual échoue alors qu'il ne devrait pas

J'ai vraiment un comportement bizarre que je ne peux pas expliquer.

J'ai la classe suivante:

public class Project
{
    public virtual int Id { get; set; }

    public virtual string Name { get; set; }
}

Et une méthode qui renvoie une Project objet:

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;
    }
}

J'ai ajouté une Unité de Test pour tester le GetByName méthode:

[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);
}

Mais quand je lance le test de l'unité, il échoue lorsque l'on compare le type des deux objets avec l'erreur suivante:

Affirmer.AreEqual a échoué. Prévu:<MyProject.NHibernate.Projet>.
Réel:<MyProject.NHibernate.Projet>.

Pourquoi, c'est l'affirmation défaut?


N'est pas Affirmer.AreEqual affirmant que sur les propriétés des objets?

Selon la documentation:

Affirmer.AreEqual Méthode (Object, Object)

Vérifie que les deux objets spécifiés sont égaux. L'assertion échoue si
les objets ne sont pas égaux.

Affirmer.AreSame Méthode

Vérifie que l'objet spécifié variables font référence au même objet.

source d'informationauteur Schaliasos