Rezension: Pragmatic Unit Testing in Java 8 with JUnit von Jeff Langr

Ich bin ständig auf der Suche nach guter Literatur, die ich meinen Azubis zur Einarbeitung in bestimmte Themengebiete der Informatik – und insbesondere der Programmierung – empfehlen kann. Vor kurzem wurde ich mal wieder fündig.

Meine aktuelle Top-Empfehlung zum Einstieg in das Thema Unit-Tests ist Pragmatic Unit Testing in Java 8 with JUnit* von Jeff Langr. Es ist sehr verständlich geschrieben, enthält tolle Beispiele – und zwar endlich einmal auch in Java 8 – und ist dank des geringen Umfangs von knapp 200 Seiten sehr schnell zu lesen.

Jeff Langr - Pragmatic Unit Testing in Java 8 with JUnit (Affiliate)*

Die Bücher aus dem Hause Pragmatic Programmers kann man eigentlich ausnahmslos empfehlen. Sie haben u.a. auch das „Standardwerk“ zum Einstieg in Ruby on Rails* oder POODR* veröffentlicht. Pragmatic Unit Testing in Java 8 with JUnit* reiht sich – meiner Meinung nach – hier perfekt ein.

Teil I

Das Buch führt auf knapp 50 Seiten zunächst in das Thema Unit-Tests ein und erklärt die Funktionsweise von JUnit. Schritt für Schritt wird ein lauffähiger Unit-Test erstellt und dabei werden auch die neuen Entwicklungen in JUnit berücksichtigt – also keine alten test*-Methoden mehr, sondern vernünftige Annotations. Dabei wird auch gleich das berühmte AAA zum Aufbau der Test-Methoden erläutert und @Before eingeführt.

Ich kann mir in Zukunft meine eigenen Erklärungen sparen und lasse meine Azubis diese ersten 50 Seiten lesen. Danach sollten sie alle wichtigen Begriffe und Ideen zum Thema Unit-Tests und Junit kennen 🙂

Teil II

Der zweite Teil des Buches (ca. 40 Seiten) beschäftigt sich mit interessanten Abkürzungen, die rund ums Testen und das Design von guten (!) Unit-Tests hilfreich sind:

  • FIRST – Fast, Isolated, Repeatable, Self-Validating, Timely
  • BICEP – Boundary Conditions, Inverse Relationsships, Cross-Checking, Error Conditions, Performance Characteristics
  • CORRECT – Conformance, Ordering, Range, Reference, Existence, Cardinality, Time

Anhand dieser einprägsamen Akronyme geht Jeff Langr die Eigenschaften guter Unit-Tests durch und bringt den Lesern damit gleich bei, worauf sie bei der Programmierung ihrer Tests achten sollten, um keine falsche Sicherheit zu erreichen.

Teil III

Im dritten Teil (ca. 60 Seiten) widmet sich das Buch den „großen“ Themen Refactoring und Mock-Objekte. Es wird intensiv geschildert, warum Refactoring wichtig ist und warum Unit-Tests unabdingbare Voraussetzung für das Refactoring des eigenen Codes sind. Außerdem wird erklärt, wofür man Mock-Objekte braucht und wann man sie besser nicht einsetzen sollte.

Das Kapitel wird abgerundet mit einer stimmigen Liste von Test Smells, die auf ein nötiges Refactoring des Test-Codes hindeuten. Somit wird dem Leser gleich an die Hand gegeben, dass auch der Test-Code den gleichen Qualitätskriterien genügen sollte wie der Produktivcode.

Teil IV

Der letzte Teil des Buches (ca. 50 Seiten) führt dann Test Driven Development ein und reißt weiterführende Themen wie das Testen von Multithreading-Anwendungen an. Es ist also auch etwas für fortgeschrittene Tester dabei.

Fazit

Ich konnte Pragmatic Unit Testing in Java 8 with JUnit* gut von vorn bis hinten durchlesen. Es ist durchgängig interessant geschrieben und enthält viele lehrreiche Tipps. Es ist daher meine Empfehlung für alle Azubis (oder auch Ausbilder 😉 ), die sich dem Thema Unit-Tests widmen möchten (oder müssen). Es gehört für mich ab sofort zur Standardbibliothek für meine Azubis.

Tipp für Ausbilder

Ich würde neuen Auszubildenden das Buch nach ca. drei Monaten Einarbeitung zur Lektüre empfehlen. Dann sollten sie bereits einige (negative) Erfahrungen mit der Programmierung gemacht haben und schnell einsehen, warum automatische Tests so wichtig sind. Die Java-Vorkenntnisse sollten dann auch ausreichen, um das Buch ohne Probleme zu verstehen.


Habt ihr noch weitere Literaturempfehlungen (Links, Bücher, Fachartikel etc.) zum Einstieg in die testgetriebene Entwicklung oder konkret zu JUnit? Wie habt ihr die testgetriebene Softwareentwicklung gelernt? Oder verwendet ihr gar keine automatischen Tests (wenn nein, wäre es jetzt an der Zeit, damit anzufangen 😉 )?

Probeabo bei Audible (Affiliate)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax