Wie erwarte ich Fehler in einem Komponententest?

8

Wir schreiben Komponententests für unseren Code in Clojure mit clojure.test .

Einige unserer Tests ignorieren die API und unterbrechen absichtlich den Code, um als Dokumentation für latente Mängel im Code zu dienen.

Wir wollen jedoch zwischen Fehlern dieser Tests und Fehlern normaler Tests unterscheiden.

Wir haben in der clojure.test -Dokumentation keine Vorschläge gesehen - nur (is (thrown? ...)) , was natürlich nicht das tut, was wir brauchen.

Irgendwelche Vorschläge? Im Grunde suchen wir nach etwas wie (is (not <condition>)) , außer dass das Testframework einen erwarteten Fehler aufzeichnen soll - etwas wie dies .

    
Matt Fenwick 21.10.2011, 15:59
quelle

4 Antworten

3

Ich habe Tests veranlasst, eine Ausnahme auszulösen, wenn sie so ausfallen, und dann thrown? verwendet, um zu testen, ob die Ausnahme wie erwartet eintrifft. Es gibt sehr wohl einen eleganteren Weg, aber das erledigt die Arbeit.

    
Arthur Ulfeldt 22.10.2011 01:11
quelle
1

Wie @andy sagte, kannst du report function erneut binden.

%Vor%

Und benutze dieses Makro wie folgt:

%Vor%

Das wird erfolgreich bestanden Test.

    
hsestupin 18.09.2013 14:46
quelle
0

Erneut die Berichtsfunktion wie in clojure.test dokumentiert. Von dort aus können Sie ändern, wie der "Fehler" behandelt und gemeldet wird.

    
andy 04.03.2012 18:45
quelle
0

Ein wenig spät auf die Party, ich weiß, aber wenn Sie Leiningen verwenden, können Sie Testselektoren verwenden, um erwartete Fehler vom "normalen" Build auszuschließen. In Ihrem Projekt.clj:

%Vor%

Schreiben Sie dann Ihren Test als:

%Vor%

Durch den Aufruf von lein test werden nur die Tests ohne die Metadaten für erwarteten Fehler ausgeführt. Wenn Sie lein test :expected-failure aufrufen, werden Ihre erwarteten Fehlertests ausgeführt. Vielleicht nicht ganz das, was du dir erhofft hast, aber IMHO besser, als thrown? überall benutzen zu müssen. Zumindest auf diese Weise werden erwartete Fehler explizit im Code dokumentiert und stören den Build nicht.

    
Alex 15.08.2012 18:51
quelle

Tags und Links