Wie wird ein Grund für eine fehlgeschlagene Testeigenschaft mit Quickcheck angezeigt?

9

Was ist die beste Vorgehensweise, um Gründe für einen fehlgeschlagenen Eigenschaftstest anzuzeigen, wenn dieser mit QuickCheck getestet wird?

Betrachten Sie zum Beispiel:

%Vor%

Dann könnte die a-Sitzung wie folgt aussehen:

%Vor%

Aber zum Debuggen wäre es sehr praktisch, den Grund für einen Fehler als Teil des fälschungssicheren Berichts zu zeigen.

Ich habe es so gehackt:

%Vor%

Gibt es einen besseren / netteren oder schnelleren Weg, dies zu tun?

    
maxschlepzig 23.01.2011, 08:17
quelle

2 Antworten

9

Ich nehme an, dass Ihre "reason" -Variable einige testspezifische Daten darüber enthält, was falsch gelaufen ist. Sie könnten stattdessen ein "Ergebnis" zurückgeben, das sowohl erfolgreiche / fehlgeschlagene / ungültige Bedingungen als auch eine Zeichenfolge enthält, die erklärt, was falsch gelaufen ist. Eigenschaften, die Ergebnisse zurückgeben, werden von QuickCheck genau so behandelt wie Eigenschaften, die Bool zurückgeben.

(bearbeiten) So:

%Vor%

Beachten Sie, dass es sich um den Typ "Result" handelt, der in der gewünschten Test.QuickCheck.Property definiert ist.

Es gibt auch einige Kombinatoren in Test.QuickCheck.Property definiert, die Ihnen helfen, das Ergebnis zu erstellen, anstatt den Konstruktor direkt aufzurufen, wie zB

%Vor%

Ich denke, es wäre besser, diese zu benutzen.

    
Paul Johnson 23.01.2011, 18:13
quelle
2

Da QuickCheck Ihnen die Eingaben für die Funktion liefert und der zu testende Code rein ist (richtig?), können Sie diese Eingaben einfach der Funktion zuführen und das Ergebnis erhalten. Dies ist flexibler, da Sie mit diesen Eingaben auch mehrmals mit der ursprünglichen Funktion testen können, bis sie korrekt ist.

    
Edward Z. Yang 23.01.2011 11:34
quelle

Tags und Links