In meinem derzeitigen Projekt geht es darum eine Lösung unseres Kunden von einem anderen Anbieter zu übernehmen. Zunächst stand ein ausführliches Refactoring an, da der Code extrem anfällig und sehr schlecht zu warten war. Wir implementieren die Schnittstellen zu Datenbank als Interface, so das wir nicht mehr auf dem Kundensystem testen müssen, sondern dies jeder Entwickler auf seinem System tun kann.

Zunächst mussten wir allerdings erreichen, dass die Ausgabe der Lösung die gleiche wie zuvor bleibt. Bei der Lösung handelt sich um einen Windows-Dienst der mehrere XMLs erstellt. Also ließen wir den Dienst anfangs einmal laufen und die verschiedenen XMLs wurden erstellt. Diese sollten unsere Gegentests werden. Die Datenschnittstelle, die zuvor direkt auf die Datenbank zugegriffen hat, ersetzen wir auf Zugriffe auf eine SQLite-Datenbank. Warum wir das tun und wie dies funktioniert möchte ich in diesem Blogeintrag erklären.

Zuerst sollte ich allerdings dir Frage klären warum wir hier SQLite gewählt haben. Die Antwort ist recht einfach. Mit SQLite kann man mit recht wenigen Dateien Tests durchführen. Die Stärke liegt darin, dass man keinerlei Programme installieren muss sondern nur die dlls und die Datenbankdatei ins das Testprojekt inkludiert. Damit kann man im gesamten Team Tests ausführen ohne dass die Testdaten eigens mit SQL-Skripten in einer lokalen Datenbank bereitgestellt werden müsse.

Um SQLite einzusetzen, sollte man sich über den Nuget-Manager das SQLite-Package holen. Dazu kann man folgenden Link nutzen: http://www.nuget.org/packages/System.Data.SQLite

Anschließend erstellt man eine Datenbankdatei. Diese kann über einzelne Inserts wie ein ADO.Net-Provider angesprochen werden. Sollte man allerdings größere Datenbestände haben (z.B. als csv) dann loht sich hier der Einsatz von einigen Tools.

Das SQLite Studio (http://sqlitestudio.one.pl/) kann recht schnell Daten importieren und Daten manipulieren.

image

image

 

Ein anderes gutes Tool ist der SQL Administrator (http://sqliteadmin.orbmu2k.de/). Mit dessen Hilfe bekommen die Spalten auch recht schnell Datentypen wie Text, Integer oder Blob.

image

image

Nun muss das Ganze noch eingecheckt werden und man kann über einfache SQL-Statements, ADO.Net-Komponenten oder sogar Linq auf den Inhalt der Datenbank zugegriffen werden.

Das tollste daran, ist das das Ganze nun auch gleich mit dem Team Build funktioniert.

1 Comments

  1. Pingback: Aus der Praxis: Unittesting mit SQLite - SharePoint Blogs in German - Bamboo Nation

Leave a comment

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

Time limit is exhausted. Please reload the CAPTCHA.