An dieser Stelle würde ich gerne alle bad smells (unangehmen Gerüche), die ich bzgl. Tests finde, sammeln und diskutieren, inweit sie wirklich vermiedbar wären und was zu tun wäre.

Empty test

Ein leerer Test ist ein übler Geruch, weil er grün ist, obwohl nichts getestet wird. Zudem gibt es in den Testframeworks hervorragend einfache Mittel, Tests zu ignorieren.

@Test
@Ignore
public void testAnything() {
   ...
}

Ein wirklich schönes Beispiel für diesen Smell, das zeigt, das auch eine Etage über uns, Test Smells wahrgenommen werden, ist der folgende Vertipper, den ich in einem Projekt beim Review gesehen habe:

@Test
public void doNothink() {
}

Offenbar wollte der Entwickler durch geschickte Namensgebung darauf hinweisen, dass in diesem Test ja nichts getan wird, also beispielsweise do nothing, aber irgendeine uns unbekannte Macht, hat ihn zu einem aussagekräftigen Vertipper bewogen und eigentlich damit offenbart, dass hier nicht nachgedacht wurde (do no think).

Object to test is a spy

Neulich stolperte ich beim Java Code Lesen über folgende Zeilen:

@Before
public void setUp() {
   object2Test = spy(object2Test);
   ...

Das zu testende Objekt wurde als Spy angelegt.
Unweigerlich drängte sich mir die Frage auf: Warum?

Offenkundig war dieser Test NICHT in einer TDD Session entstanden; zumindest hatte ich in all den Jahren des testgetriebenen Entwickelns noch nie die Situation, einen Spy zu verwenden, es sei denn beim Schreiben von Tests für Legacy Code.

Ein Spy für das zu testende Objekt kann nur den Sinn haben, dass ich Methoden meines Testobjekts mocken möchte (when…thenReturn…), während ich andere Methoden teste. Dann teste ich aber nicht das Verhalten meiner Unit, also der Klasse, sondern sogar „nur“ einen Teil der Unit. Und wenn dies ein einzeln zu betrachtender Schritt in der Verarbeitung ist, liegt der Schluß nahe, dass er von einer eigenen, einzelnen Komponente implementiert werden sollte. Damit wäre dann diese Komponente zu mocken und nicht mehr die eigene Methode, was die Erstellung eines Spys unnötig werden ließe

In jedem Fall sollte man genau hinterfragen, warum das Mocken einzelner Methoden notwendig ist beim Test einer Methode.
Für mich jedenfalls liegt in solchen Fällen ein höchst unangenehmer Geruch in der Luft.

Test smells
Markiert in:         

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.