Heute habe ich zum dritten mal in den letzten Tagen Kollegen von meine Erfahrungen mit den Unit-Tests für Datenbank-Objekte erzählt. Dazu benutze ich die "Visual Studio Team Edition for Database Professionals", die ich eigentlich wegen anderer Dinge angeschaut habe.
Das interessant daran ist, dass ich mittlerweile zwar schon recht deutlich ein paar Nachteile sehe, aber schon denke, dass es sich schon fast alleine wegen der Units-Tests lohnt die sehr teure Lizenz anzuschaffen.

Es wird einem echt viel Arbeit abgenommen und man muss sich nur um wenige Dinge selber kümmern. Man kann alles Testen, das sich mit SQL ausdrücken lässt: Prozeduren, Funktionen, Views, Trigger, sogar Assemblies.
Ich denke, es eignet sich besonders gut für entwicklungsbegleitendes Testen.

Hier ein paar Schattenseiten, die ich schon fand:

  • Für Negativ-Tests muss man gewünschte Fehlermeldungen in einem Catch-Block auffangen und schauen, ob der gewünschte Fehler auftrat. Wenn nicht, muss man einen Fehler werfen. Das geht schon, ist aber unnötig aufwändig: Es wäre schön, wenn man eine Test-Bedingung "Fehler xy tritt auf" angeben könnte.
  • Es gibt keine Test-Bedingung, die ein ResultSet mit einer Datei vergleicht. Allerdings war es nur ein geringer Aufwand so eine Erweiterung selber zu schreiben.
  • Man kann nicht automatisch die gleichen Tests mit verschiedenen Datenbanken (z.B. mit verschiedenen Datenmengen oder Konstellationen) hintereinander ausführen. Mann muss dazu selber etwas außen rum machen, dass die DBs "austauscht" und die Tests dann neu startet. Dazu hatte ich noch keine Lust, äh Zeit, wird mir aber vermutlich nicht erspart bleiben.

Ich glaube, dass ich langsam aus dem Hype rauskomme und in die Phase "get real" reinrutsche… 😉