Laden...

Unit Tests oder doch Service Tests die Daten in Datenbank schreiben?

Erstellt von #coder# vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.068 Views
#coder# Themenstarter:in
395 Beiträge seit 2008
vor 12 Jahren
Unit Tests oder doch Service Tests die Daten in Datenbank schreiben?

Hallo, ich habe eine Mehrschichtige Webanwendung die Daten laden, speichern kann. Nun sollen alle BusinessServervices für alle Domänenobjekte getestet werden, hierfür sollen Daten angelegt, geändert und gelöscht werden.
**
ShouldBeAbleToSave
ShouldBeAbleToUpdate
ShouldBeAbleToDelete**

Alle Testmethoden werden unabhängig getestet. Ein Problem das aufkommt sind die gespeicherten Daten in der DB. Um diese löschen zu können muss der jeweilige Service existieren. Problematisch wird es bei Objekten die mehrere Verweise haben müssen, d.h. in der Datebank müssen erst alle Referenztabellen erstellt werden, dann kann das Hauptobjekt angelegt werden.

Wie geht ihr mir solchen Tests um und wie säubert ihr die Datenbank nach den Tests?

1.552 Beiträge seit 2010
vor 12 Jahren

Hallo #coder#,

Um diese löschen zu können muss der jeweilige Service existieren.

erstelle eine Minimaldatenbank, damit du imstande bist zu Testen. D.h. füge all jene Daten in die Datenbank vor dem Test ein, belasse die, teste und räum dann auf, damit die Minimaldatenbank vor und nach dem Test dieselbe bleibt.
Mach dir evtl ein Script welche bei Bedarf die Datenbank neu erstellt und die Daten füllt. Dies lässt sich wunderbar mit einem Datenbank-Pojekt machen. Kort kann man sich bei Bedarf vor dem Unit Test die Datenbank mit dem Datenbank-Projekt neu erstellen lassen, und ein Post-Deployment Skript durchlaufen lassen, welches alle INSERT-Statements beinhaltet.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

5.742 Beiträge seit 2007
vor 12 Jahren

Hallo #coder#,

evtl. ist auch eine In-Memory-DB etwas für dich.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo #coder#,

du willst doch an der Stelle die Funktionalität der genannten Methoden testen, nicht die Funktionsfähigkeit der verwendeten Datenbank. Insofern: Mocking. Das Mock-Objekt kannst du dann so programmieren, dass es tut, was du gerne möchtest.

herbivore