SQL Practice Blog – SQL Server, BizTalk und .NET Erfahrungen

NUnit: Testdaten aus einer externen Datenquelle beziehen

leave a comment »

Wer kennt dieses Problem nicht? Ich bin fleißig am Tests schreiben für meine Applikation und bemerkte nach einer Weile das ich ein immer wiederkehrendes Szenario, nur mit unterschiedlichen Werten, testen muss. Hier wäre doch die Möglichkeit externe Quellen mit Testwerten anzuzapfen eine prima Idee.

Ich möchte dies am Beispiel einer einfachen Divisionsfunktion und einer externen CSV Datei mit den Testwerten einmal näher beleuchten. Hierfür nutze ich das Testframework NUnit 2.5.7.

Was für Daten benötige ich für einen Divisionstest? Ich benötige einen Dividend und einen Divisor, desweiteren brauche ich das erwartete Ergebnis. Demzufolge würde unsere CSV wie folgt aussehen:

image

Der grundlegende Lösungsansatz für unser Problem ist die Nutzung des Attribute TestCaseSource von NUnit. TestCaseSource erlaubt es aus einer Property, welche eine IEnumerable zurückgibt Testfälle zu gewinnen.
Dieses Property (statisch) wird zusammen mit den benötigten Properties (Dividend, Divisor und zu erwartendes Ergebnis) in einer Klasse abgebildet. Dieses Property liest in meinem Beispiel eine CSV Datei mit den Testwerten aus und generiert daraus Objekte. Alternativ kann hierfür auch der Zugriff auf eine beliebige andere Datenquelle (Excel, Datenbank, Services …) genutzt werden.

image

Der Test welcher die Testdaten nutzen wird bekommt neben dem Attribute [Test] nun auch noch das Attribute [TestCaseSource] zugewiesen. Bei [TestCaseSource] muss ich den Typ der Testdatenklasse hinterlegen und den Namen des Properties aus der die Tastdaten kommen.
Desweiteren benötige ich einen Übergabeparameter an die Testfunktion vom Typ der Testdaten. Über diesen Übergabeparameter erhalte ich dann meine Testdaten.

image

Es ist natürlich nicht zu empfehlen Dank dieses Attributes nur noch einen Test pro Funktion zu schreiben und damit alle Testfälle abzudecken. Sinnvoll eingesetzt kann das Attribute [TestCaseSource] gerade in Szenarien wo ich gegen viele Werte prüfen muss, mir viel Arbeit abnehmen.

Written by Robert Meyer

August 12, 2010 um 14:14

Veröffentlicht in .NET

Tagged with , , , ,

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: