2016-08-11 3 views
-2

Wenn NUnit Unit-Tests ausgeführt wird, erhalte ich die folgende Ausgabe:
Message: Expected: <Data.Models.Address>
But was: <Data.Models.Address>NUnit Unit-Test nicht mit dem richtigen erwartetem Ergebnis

Als
NUnit Output

im Bild unten gezeigt Ich bin mit der Anwendung unter .NET 3.5 und mit NUnit 2.6.3, da ich glaube, dass dies die neueste Version ist, die ich mit .NET 3.5 verwenden kann. Gibt es einen Grund, dass ein Komponententest auf diese Weise fehlschlägt? Gibt es eine Möglichkeit, das zu beheben, oder bin ich nur entbeint?

+0

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. –

+0

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

Antwort

-1

Aufschalten Equals diese Frustration mit NUnit AreEqual aufgelöst (obj a, obj b)

public override bool Equals(object obj) 
{ 
    return obj.GetType() == GetType(); 
} 

Natürlich wollen Sie würden alle Daten überprüfen, um sicherzustellen, dass Obj_A zu Obj_B tatsächlich gleich ist.

+0

das ist wahrscheinlich, weil Sie etwas wie Assert.AreEqual (ExpectedAddress, ActualAddress); Sie können auch nur die relevanten Eigenschaften überprüfen: Assert.AreEqual (ExpectedAddress.Name, ActualAddress.Name) usw. (Wenn Sie nicht zu viele, zu oft überprüfen müssen - sonst ist die Equals Override offensichtlich der Weg zu gehen) –

+0

Wie immer hängt es vom Kontext ab, aber zu testen, dass a.Equals (b), wenn Gleichheit nur auf Typ überprüft, klingt wie eine seltsame Implementierung von Gleichheit + Testfall für mich. Das einzige, was für diesen Test relevant ist, ist zu überprüfen, ob eine Adresse zurückgegeben wird? Es ist dir egal, ob es zum Beispiel die richtige Adresse ist? – prgmtc

+0

Rechts. Ich weiß, ich könnte alle Eigenschaften leicht überprüfen, aber ich möchte nur sicherstellen, dass die Typen passend zurückkommen. Zu der Zeit, als ich das herausgefunden hatte, war ich bereit, meinen Schreibtisch umzudrehen, also brauchte ich nur eine grundlegende Implementierung, um zu zeigen, dass ich die Anwendung in Betrieb genommen habe. – Ingenioushax

1

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.

+0

Das ist wirklich toll und danke, dass du dir die Zeit genommen hast. Leider konnte ich die Testfälle nicht ändern, daher wäre das Hinzufügen von 'Is.EqualTo (object) 'nicht möglich gewesen. :/Das ist aber toll, und ich werde es zu einem Lesezeichen hinzufügen. : D – Ingenioushax

Verwandte Themen