Unit-Testing mit Visual Studio

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

In den bisherigen Ausgaben von Datenbankentwickler haben wir ohne moderne Entwurfsmuster programmiert und beispielsweise den Code von Fenstern im Code behind-Modul gespeichert. Das wollen wir nun ändern und das Entwurfsmuster Model-View-ViewModel (kurz MVVM) vorstellen. Das ermöglicht durch eine Zwischenschicht zwischen der Benutzeroberfläche und dem Entity Data Model das automatisierte Testen der meisten Funktionen einer Anwendung. Durch automatisiertes Testen, hier Unit-Testing genannt, können wir Tests für unseren Code definieren, die wir immer wieder per Mausklick durchführen können. So können Sie Änderungen am Code durchführen und sich blitzschnell versichern, dass der Code noch so läuft wie gewünscht. Im vorliegenden Artikel erläutern wir, was es mit Unit-Testing auf sich hat und wie Sie es unter Visual Studio einsetzen.

Tests von Softwareanwendungen sind meist aufwendig, vor allem, wenn sie manuell durchgeführt werden. Das größte Problem dabei ist: Wenn sich eine Funktion der Anwendung ändert, muss man normalerweise zumindest alle damit zusammenhängenden Funktionen erneut testen, was Zeit und Geld kostet. Eine Automatisierung der Tests über die Benutzeroberfläche ist ebenfalls kritisch zu sehen, was den Aufwand betrifft, denn auch hier können kleinste Änderungen dazu führen, dass die Tests nicht mehr funktionieren und ebenfalls angepasst werden müssen.

Wenn Sie mit einem Entwurfsmuster wie dem eingangs erwähnten MVVM arbeiten, wobei es eine Schicht gibt, welche die Anwendungslogik enthält und die Daten der Benutzeroberfläche liefert, aber keine Abhängigkeit von der Benutzeroberfläche hat, können Sie diese Schicht mit der Anwendungslogik auch ohne den Umweg über die Benutzeroberfläche testen. Dazu initialisieren Sie die entsprechenden Objekte und testen deren Methoden.

Weil sich diese Tests meist auf einzelne Klassen oder Komponenten beziehen, werden sie im Allgemeinen Unit-Tests genannt.

Beispielprojekt für die Unit-Tests erstellen

Da wir in diesem Magazin meist Desktop-Anwendungen programmieren, wollen wir auch als Beispiel für die Unit-Tests ein solches Projekt nutzen. Also legen Sie ein neues Projekt des Typs WPF-App (.NET-Framework) an und legen für dieses den Namen UnitTestBeispiel fest.

Im Anschluss an diesen Vorgang sollte Visual Studio geöffnet sein und im Projektmappen-Explorer das neu erstellte Projekt anzeigen.

Mögliche Konfigurationen für Unit-Tests

Wenn Sie Unittests durchführen wollen, haben Sie verschiedene Möglichkeiten – zum Beispiel die folgenden:

  • Sie erstellen ein eigenes Projekt, das nur die Unittests enthält und das Sie gemeinsam mit dem Testprojekt in einer Projektmappe verwalten.
  • Sie erstellen die zum Testen notwendigen Elemente innerhalb des zu testenden Projekts.

Eines der Ziele beim Unit-Testing ist, den Code des zu testenden Projekts nicht aufzublähen. Deshalb fügen wir die Unit-Tests auch nicht zu dem Projekt hinzu, das wir testen wollen, sondern legen ein eigenes Projekt dafür an. Dieses Projekt soll allerdings in einer Projektmappe mit dem zu testenden Projekt landen. Deshalb gehen wir wie folgt vor, um das Testprojekt zu erstellen:

  • Betätigen Sie den Menübefehl Datei|Neu|Projekt… (siehe Bild 1).
  • Anlegen eines neuen Projekts

    Bild 1: Anlegen eines neuen Projekts

  • Wählen Sie im Dialog Neues Projekt erstellen mit dem linken Auswahlfeld den Eintrag Visual Basic und mit dem rechten Auswahlfeld den Eintrag Test aus und finden Sie die verfügbaren Testprojekte in der Liste. Hier wählen wir die Projektvorlage NUnit-Testprojekt aus (siehe Bild 2).
  • Auswahl des Projekttyps

    Bild 2: Auswahl des Projekttyps

  • Im folgenden Schritt legen Sie den neuen Projektnamen fest. Diesen wählen wir so, dass er mit dem Namen des zu testenden Projekts beginnt und hängen die Zeichenfolge .Unit.Test an. Außerdem stellen wir hier ein, dass das neue Projekt der bestehenden Projektemappe hinzugefügt werden soll (siehe Bild 3).
  • Hinzufügen des Projekts zur bestehenden Projektmappe

    Bild 3: Hinzufügen des Projekts zur bestehenden Projektmappe

  • Schließlich legen Sie noch das Zielframework für das neue Projekt fest.

Das gleiche Ergebnis erhalten Sie übrigens auch, wenn Sie den Menübefehl Datei|Hinzufügen|Neues Projekt… betätigen – Sie brauchen dann im Dialog Neues Projekt konfigurieren nicht mehr festzulegen, dass das neue Projekt zur aktuellen Projektmappe hinzugefügt werden soll.

Das neue Unit-Test-Projekt

Das Anlegen des Projekts hat zwei sichtbare Änderungen in unserem Projekt bewirkt. Die erste ist, dass wir im Projektmappen-Explorer unter unserem eigentlichen Projekt auch das neu angelegte Unit-Test-Projekt vorfinden (siehe Bild 4).

Das neue Testprojekt in der Projektmappe des zu testenden Projekts

Bild 4: Das neue Testprojekt in der Projektmappe des zu testenden Projekts

Die zweite Änderung ist das Klassenmodul UnitTest1.vb, das wir im Codefenster von Visual Studio vorfinden (siehe Bild 5). Die Bestandteile schauen wir uns gleich genauer an.

Die Vorlage für eine Testklasse

Bild 5: Die Vorlage für eine Testklasse

Verweis zum Unit-Test-Projekt hinzufügen

Bevor wir uns die Unit-Test-Vorlage ansehen, die zum Testprojekt hinzugefügt wurde, wollen wir noch einen Verweis zum Testprojekt hinzufügen.

 

Schreibe einen Kommentar