2 Stimmen

Was ist der empfohlene Weg, um Daten zu protokollieren, die in JUnit Fehler verursacht haben?

Ich bin relativ neu bei JUnit und habe heute einige meiner ersten Tests geschrieben. Für eine bestimmte Methode wollte ich zufällige Werte übergeben (alle innerhalb des korrekten Bereichs). Wenn die Methode aus irgendeinem Grund fehlschlägt, möchte ich wissen, welcher Wert dazu geführt hat. Was ist also der empfohlene Weg, um dies zu tun?

(Oder ist es schlecht, zufällige Werte in JUnit-Tests zu verwenden?)

0voto

olli-MSFT Punkte 2546

Wenn Ihr Unit-Test aus irgendeinem Grund fehlschlägt, sehen Sie eine rote Ampel in Ihrem Test-Runner. Der Test-Runner zeigt Ihnen auch, welche Testmethode fehlgeschlagen ist, und der Log-Bericht des Test-Runners enthält weitere Details (zum Beispiel der angefallene Stack-Trace). Untersuchen Sie diesen Fehler, korrigieren Sie ihn, und Ihr Test sollte nie wieder fehlschlagen, es sei denn, Sie brechen den Code.

Daher sehe ich keine Notwendigkeit, Ausnahmen zu protokollieren. Sie sollten jeden Fehler (rote Ampel) sofort beheben.

Die Verwendung von Zufallswerten kann recht gefährlich sein, wenn Sie nicht garantieren können, dass Ihre Generierung dieser Werte fehlerfrei ist. Das Überprüfen der Randbedingungen könnte sinnvoller sein.

0voto

Esko Luontola Punkte 71758

Sie können wiederholbare Zufallswerte haben, indem Sie einen konstanten Seed an den Zufallszahlengenerator übergeben. In Java erstellen Sie ein java.util.Random mit einem festen Seed und übergeben es als Konstruktorparameter an die Klasse (Dependency Injection). So:

new ClassUnderTest(new Random(123L));

Je nachdem, was Sie testen, können Sie auch die Generierung der Zufallswerte von ihrer Verwendung trennen. Wenn Sie beispielsweise eine Klasse X haben, die Zufallswerte im Bereich von 1 bis 10 verwendet, können Sie sie testen, indem Sie ihr die Randwerte 1 und 10 sowie einen Wert aus der Mitte wie z.B. 4 übergeben. Dann benötigen Sie einen weiteren Test für den Erzeuger dieser Zufallswerte. Geben Sie ihm z.B. ein java.util.Random mit einem festen Seed und generieren Sie 100 Werte, um zu überprüfen, dass sie alle im erlaubten Bereich liegen.

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