Testbarkeit wieder herstellen: das IOSP

In Legacy Code Projekten existieren typischerweise nur wenige oder gar keine automatisierte Tests. Die simple Empfehlung, diese doch bitte mal zu ergänzen, geht an der Realität vorbei. Der Code ist nicht mit Blick auf Testbarkeit konzipiert worden. Vor allem Abhängigkeiten und fehlende Aspekttrennung erschweren das Testen. Es hilft nichts: der Code muss refaktorisiert werden, bevor Tests ergänzt werden können.

Unit Tests mit .NET Core

[Updated] Unit Tests mit .NET Core

Wie schreibe ich Unit Tests mit .NET Core? Diese simple Frage sollte eigentlich überflüssig sein. Microsoft hat mit .NET Core Version 1.0 gerade eine plattformübergreifende Version des .NET Frameworks herausgebracht. Man sollte meinen, dass Unit Tests dabei von Anfang an mit berücksichtigt wurden. Das automatisierte Testen ist schließlich Stand der Technik und absolut unverzichtbar. Ich habe erwartet, dass nach der Installation der .NET Core Unterstützung für Visual Studio 2015 ein neuer Projekttyp für .NET Core Unit Tests angeboten wird. Doch Fehlanzeige. Der Beitrag zeigt, wie es geht.

Ressourcen automatisiert testen

Die kniffligen Fälle beim Testen – Ressourcen

Ressourcenzugriffe wie das Lesen oder Schreiben von Dateien oder Datenbankzugriffe bereiten beim automatisierten Testen häufig Probleme. Ganz überwiegend liegt das daran, dass der Zugriff auf eine Ressource, wie eine Datei oder Datenbank, mit anderen Aspekten im Code vermischt ist. Innerhalb einer Methode wird dann sowohl auf die Ressource zugegriffen als auch mit den gelesenen Ergebnissen gearbeitet. Das Vermischen der Aspekte erschwert das automatisierte Testen.

Automatisiertes Testen von Events

Die kniffligen Fälle beim Testen – Events

Events spielen eine große Rolle in .NET Anwendungen. Häufig basieren große Teile der Verbindung zwischen der UI und „dem Rest“ der Anwendung auf Events. Auch außerhalb der UI gibt es viele Stellen, an denen Events sehr nützlich sind. Hier wäre vor allem das Thema asynchrone Aufrufe zu nennen. Asynchrone Aufrufe bestehen oft aus einer Methode, über die der asynchrone Vorgang gestartet wird, sowie einem Event, über den das Resultat geliefert wird, sobald es zur Verfügung steht.

Doch wie testet man Events automatisiert? Der Beitrag gibt Antworten.

Die kniffligen Fälle beim Testen – Exceptions

Im Kontext von automatisierten Tests fallen Exceptions in eine der beiden folgenden Kategorien:
(a) Eine Methode löst selbst eine Exception aus, wenn sie einen Ausnahmezustand entdeckt.
(b) Während der Ausführung einer Methode kann eine Exception auftreten, auf die die Methode reagiert.
Der Beitrag beschreibt, wie solche Fälle automatisiert getestet werden können.