2 Stimmen

Assert.Fail lässt den Test nicht scheitern?

Ich verwende VS 2008 für Unit-Tests. Auch wenn mein Code aufruft

Assert.Fail("some message");

Test bestanden ??

und sogar

Assert.IsTrue(false); auch diese Prüfung besteht.

Wie ist das möglich? Ich erwarte, dass der Test fehlschlägt. Ich möchte ihn zwangsweise fehlschlagen lassen.

Bitte um Hilfe!

0 Stimmen

Stellen Sie sicher, dass Sie einen Debug-Build durchführen?

4 Stimmen

Vielleicht ist der Code, den Sie testen, so gut, dass er nicht versagen kann! Ich wünschte, ich wüsste, wie man so einen Code schreibt, ich vermassle die ganze Zeit die Unit-Tests.

3 Stimmen

Chuck Norris in Aktion:)

5voto

Grzenio Punkte 34566

Wahrscheinlich fangen Sie irgendwo im Testcode Ausnahmen ab. Die Klasse Assert verwendet Ausnahmen, um den Test fehlschlagen zu lassen, wenn Sie sie also abfangen, ist der Test erfolgreich.

Bitte fügen Sie den Code ein, um eine genauere Antwort zu erhalten.

0 Stimmen

Das wäre auch meine Vermutung - AssertFailedException FWIW

0voto

leppie Punkte 111830

Verwenden Sie die in .NET integrierte Assert-Klasse? Wenn ja, vermute ich TRACE wurde nicht definiert.

0voto

Patrick Szalapski Punkte 7759

Manchmal, wenn ich auf "Tests ausführen" klicke, habe ich gesehen, dass die Test-Engine in der Release-Konfiguration erstellt wird, aber dann Tests gegen eine ältere Debug-Konfiguration erstellt werden. Ich würde das als einen Fehler in der VS2008 Test-Engine bezeichnen. Wie auch immer, versuchen Sie, Ihre Debug- UND Release-Ordner zu bereinigen und die Tests erneut auszuführen.

0voto

BrainSlugs83 Punkte 5871

Ich kann nicht sicher sein, ohne mehr zu wissen, was Sie tun, aber es klingt wie Sie erwarten, dass die .NET-Klassen wie die NUnit-Klassen zu arbeiten - kann nicht sicher sein - aber wenn Sie sind, das wird nie funktionieren.

Die .NET-Klassen funktionieren nur, wenn Trace definiert ist (sehen Sie sich die Projekteigenschaften an, klicken Sie auf die Registerkarte Build und dann auf die Konstante "Define TRACE"). -- Aber für Unit-Tests ist das nicht hilfreich - diese Klassen werfen keine Ausnahmen oder lassen Unit-Tests anderweitig scheitern... sie zeigen Meldungsfelder für diejenigen an, die das Mantra "Debug später" unterschrieben haben.

Wenn Sie wollen, dass Assert.Fail eine Einheitstest benötigen Sie ein Unit-Testing-Framework, das eine Klasse zur Verfügung stellt, die diese Aufgabe übernimmt (z. B. NUnit). Bitte lassen Sie uns wissen, welches Testframework Sie verwenden (oder nicht verwenden?), dann können wir Ihnen etwas mehr helfen, wenn Sie immer noch Probleme damit haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X