2013-04-20 15 views
7

Ich bin neu in der Arbeit mit SQL-Datenbank, bin aber mit dem Testen meiner Datenbank konfrontiert worden. Aus Sicherheitsgründen werden Abfragen oder Aktualisierungen über gespeicherte Prozeduren ausgeführt.SQL Unit Testing Stored Procedures

Es wurde mir von einem Peer empfohlen, gespeicherte Prozeduren zu verwenden, um andere gespeicherte Prozeduren zu testen. Ist das eine gute oder eine schlechte Lösung für das Testen meiner gespeicherten Prozeduren, um sicherzustellen, dass sie das tun, was sie tun sollen?

+1

Eine alternative Methode zum Testen Ihrer gespeicherten Datenbankprozeduren ist die Verwendung von [DBUnit] (http://www.dbunit.org/) – flup

Antwort

8

Ich fand eine hervorragende Lösung mit Visual Studio: Visual Studio Unit Testing

Es ermöglicht Ihnen, Unit-Tests für gespeicherte SQL-Prozeduren zu erstellen, können Sie auch die Datenbank mit Hilfe von regulären Ausdrücken bevölkern - sehr cool stuff.

1

Ich weiß nicht, welches Tool einen Komponententest für die SQL-Anweisungen oder Speicherprozeduren durchführen kann. Ich schreibe normalerweise das SQL-Skript, um einen Test dafür zu machen.

  1. Erstellen Sie eine leere Datenbank, natürlich, die gleiche Struktur wie die ursprüngliche.
  2. Bereiten Sie die Daten vor (Importieren Sie einige Daten aus der ursprünglichen Datenbank).
  3. Rufen Sie die gespeicherte Prozedur auf.
  4. Dann sehen Sie die Daten, wenn es korrekt ist oder nicht.

Manchmal einige assert Aussagen wie die

IF EXISTS (SELECT * FROM XX INNER JOIN XXX ON XXXXXXXX WHERE XXX=XXX) 
    RAISEERROR XXXXXX 

schreiben Wenn einige Ausnahmen oder Fehler ausgelöst werden, dann können Sie die gespeicherte Prozedur überprüfen.

Aber es ist Zeitverschwendung.

Normalerweise überprüfe ich den gesamten Ausführungspfad für die gespeicherte Prozedur die meiste Zeit, und teste nur den Hauptfehler, der Punkte erwartet.

1

Ich habe TST als Test-Framework für SQL Server mit sehr positiven Ergebnissen verwendet. Es funktioniert gut und ich konnte es sogar als Teil unserer CI-Umgebung in Team City integrieren.

Der Schlüssel ist sehr vorsichtig zu sein, wie Sie Ihre Testdaten einrichten. Für welches Test-Framework Sie sich auch entscheiden, achten Sie darauf, das Test Data Builder-Muster anzuwenden. Wenn Sie dies nicht tun, können Sie sehr schnell einige Test-Refactoring-Probleme bekommen.

5

Abgesehen von DbUnit und NUnit können Sie tSQLt verwenden, wenn Sie gerne tsql schreiben. tSQLt ist ein Open-Source-Framework geschrieben in Tsql für Schreibeinheit Testfälle für Tsql.

1

DbUnit von dbunit.org ist ein guter Rahmen. Ein weiteres großartiges Werkzeug sind TSqlUnit und tsqlt von tsqlt.org.

Verwandte Themen