Bryan Albrecht

Pester PowerShell Unit Test

Wie in anderen Script- oder Programmiersprachen ist es sinnvoll den geschriebenen PowerShell Code mit automatisierten Tests zu testen. Dies bietet eine gewisse Sicherheit beim Verändern oder hinzufügen vom Code. Dies ist so, der Output einer Funktion sich nicht ändern sollte, wenn der Input gleich bleibt.

Pester Installieren

Um Pester benutzen zu können, muss man als erstes die neuste Version herunterladen.
Den heruntergeladene "Pester-master" Ordner muss nun in den Moduls Ordner von PowerShell verschoben oder kopiert werden.

Wenn unklar ist, wo sich der Modules Ordner befindet, kann man dies mit folgendem Befehl herausfinden:

  1. [Environment]::GetEnvironmentVariable("PSModulePath")

Wenn die Pester Dateien nun am richtigen Ort liegen, muss nur noch das Modul importiert werden. Dies wird mit folgendem befehl gemacht:

  1. Import-Module -Name Pester-master/Pester

Nach dem Laden der Pester Dateien ist die Installation abgeschlossen.

Demodaten aufbereiten

Da bei einem Unit Test jeweils Input und Output bekannt sein muss, ist es sinnvoll, diese im Vorhinein zu deklarieren.
In diesem Fall werden wir drei Zahlen definieren. Zwei davon werden später zum Rechnen verwendet und die dritte sollte das Ergebnis sein.

  1. $number1 = 2
  2. $number2 = 3
  3. $result1 = 1

Je nach Testfall können auch mehr Daten wie zum Beispiel Listen voller Objekte deklariert werden.

Die erstellten Testdaten werden im späteren Verlauf des Tests verwendet.

Zu testende Funktion

In diesem Beispiel wird folgende Methode getestet:

  1. Function addTwoNumbers{
  2.     Param($numberone, $ numbertwo)
  3.     Return ($numberone + numbertwo
  4. }

Tests ausführen

Um einen Test ausführen zu können, muss man ihn zuerst den gesamten Unit Test beschreiben. Dies wird mit "Describe" gemacht:

  1. Describe "Tests all calculator operations" { }

Einzelne Tests können nun mit "It" in den Unit Test eingefügt werden. Auch diese sollte man beschreiben.

  1. It "Tests the additon operation" { }

Die Überprüfung des Resultats und des erwarteten Ergebnis können nun überprüft werden. Dafür werden die davor deklarierten Variablen verwendet.

  1. addTwoNumbers –numberone $number1 –numertwo $number2 | Should Be $result1

Der gesammte Test sieht nun wie folgt aus:

  1. Describe "Tests all calculator operations"
  2. {
  3.     It "Tests the additon operation"
  4.     {
  5.         addTwoNumbers –numberone $number1 –numertwo $number2 | Should Be $result1
  6.     }
  7. }