© Excellent backgrounds/Shutterstock.com
Midje als alternatives Testframework für Clojure

Fakten, Fakten, Fakten!


Midges [1] sind kleine, aber unangenehme Zeitgenossen, die einen Aufenthalt in den schottischen Highlands ohne die richtige Vorbereitung zur Hölle machen können. Das Clojure-Testframework Midje hat mit diesen Mücken zum Glück nur den Namen gemein. Im Gegensatz zu ihnen macht es das Entwicklerleben nicht schwerer, sondern das Testen von Clojure-Programmen auch ohne große und aufwändige Vorbereitung und Einarbeitung sehr angenehm.

Was Sie aus Prolog, Clojure, Erlang & Node.js für den Mainstream lernen können

Midje (sprich [midʒ]) ist ein Testframework für Clojure und damit eine Alternative zu clojure.test. Große Stärken von Midje sind die bessere Lesbarkeit von Tests und das einfache Stubben und Mocken von Funktionen. Die Tests werden in einer Form geschrieben, die auch in Clojure-Büchern wie zum Beispiel „The Joy of Clo­jure“ [2] für Beispiele verwendet wird. Eine sehr einfache Testerwartung sieht etwa so aus:

(+ 1 1) => 2

Facts und Checkables

Tests werden anhand von Fakten zusammengefasst und strukturiert. Das Makro fact bzw. facts kann optional um einen auch bei Clojure-Funktionen üblichen Docstring zur genaueren Erläuterung des Tests ergänzt werden. Die Verwendung dieser Dokumentation hat sich als sehr sinnvoll für den schnelleren Überblick über eine Testsuite erwiesen. Facts können beliebig verschachtelt werden, wobei facts lediglich ein Synonym für fact ist, um die Lesbarkeit zu verbessern (Listing 1).

Listing 1

 (facts "about '+'" (fact "1 plus 1 equals 2" (+ 1 1) => 2) (fact "adding negative numbers results in a negative number" (+ -1 -1) => -2))

Facts bestehen aus einem oder mehreren „Check­ables“. Ein Checkable besteht aus einem Pfeil (=>) und einer rechten und linken Seite. Die linke Seite enthält die auszuführende Funktion mit ihren Argumenten, die rechte Seite das erwartete Ergebnis. Statt => kann auch =not=> verwendet werden, um direkt die Ungleichheit der beiden Seiten des Checkables zu prüfen.

In Listing 1 befinden sich auf der rechten Seite der Checkables jeweils einfache Werte. Statt einfacher Werte lassen sich über „Checker“ auch komplexere Bedingungen prüfen. Dazu später mehr.

Wenn Facts zur Spezifikation von gewolltem Softwareverhalten verwendet werden, werden diese, wie im TDD üblich, vor dem eigentlichen Verhalten implementiert. Um einen Fact für ein später gewünschtes Verhalten zu implementieren, ohne die Tests fehlschlagen zu lassen, kann das Makro future-fact verwendet werden. Die Checkables in einem future-fact werden bei der...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang