Normalerweise bekomme ich diese Art von Fehler nicht, weil irgendwelche Unheimlichkeit von NUnit, sondern weil Sie Objekte überprüfen, die nicht die gleiche Referenz sind. Wenn Sie Ihren Test einfügen würden Sie eine bessere Vorstellung von dem haben, was vor sich geht, aber es scheint mir, dass Sie es beheben würden, wenn Sie auf dem Objekt behaupten, dass Sie zum Beispiel von einer Probe zurückkehren, wenn das Ihr Fall ist. Zum Beispiel:
[Test]
public void MyTest()
{
//Arrange
const string id = "the id"
var address = new Address{Id = id};
var repository = new Mock<IRepository>(); //Using Moq here
repository.Setup(r => r.Get(id))
.Returns(address);
var sut = new AddressManager(repository.Object);
//Act
var returnedAddress = sut.GetAddress(id);
//Assert
repository.VerifyAll(); //Checks you're calling the repository with the "id"
Assert.That(returnedAddress, Is.EqualTo(address)); // This will pass because the reference is the same
}
Das ist, wie ich normalerweise die Equals tun, wenn ich bestimmte Eigenschaftswerte der Adresse testen wollen, aber diese Art von Tests würden in Klassen wie Mapper oder ähnliches zu finden. Ich habe nie die Equals BTW überschrieben.
Ich hoffe, es macht Sinn.
Niemand kann helfen, wenn Sie die Ausgabe zeigen, ohne den Test anzuzeigen und was diese Klassen sind. Es ist ein bisschen wie zu sagen, dass Sie einen Taschenrechner haben und es funktioniert nicht, weil es sagte, die Antwort ist 5. Ohne zu wissen, was die Eingabe ist, können wir nicht wissen, was die korrekte Ausgabe sein sollte. –
Nur für jedermanns Referenz; Sie müssen den Equals-Operator in den Klassen überschreiben, gegen die Sie testen. Meine einfache Implementierung war, öffentliche Überschreibung bool Equals (object obj) {return obj.GetType() == GetType(); } '. – Ingenioushax