CLR SQL Gespeicherte Prozeduren testen mit Unit Test Project

9

Ich verwende gerade VS2008, um gespeicherte Prozeduren von clr für SQL 2008 zu schreiben. Beim Schreiben von c # -Code bin ich daran gewöhnt, ein separates "Testprojekt" zu haben, wo ich meinen gesamten Unit-Testcode platzieren würde Blush, dass ich nicht das gleiche Setup mit einem Clr-SQL-Projekt mit gespeicherten Prozeduren haben kann. Es fühlt sich so an, als könnte das gemacht werden, und mir fehlen ein paar Konfigurationsparameter, aber ich bin mir nicht sicher, was das sein könnte.

Ich verwende

  • Visual Studio 2008
  • MS-Test
  • MS SQL 2008

Meine Anforderungen sind:

  1. debugge die gespeicherte Prozedur im Visual Studio Debugger
  2. haben eine Menge von Unit-Test, um die gespeicherten Prozeduren zu testen

Weiß jemand, wie ich das Unit-Test-Projekt richtig depoly die gespeicherten Prozeduren zum Server machen kann, verbinden Sie sich mit dem SQL-Server und erlauben Sie mir, durch den Unit-Test zu den gespeicherten Prozeduren zu gehen, die auf dem Server sitzen?

**** UPDATE ****

Danke an alle für die Antworten bis jetzt, aber sie sind nicht genau das, wonach ich suche.

Mark Seemann Antwort unten ist ein interessanter Ansatz, den ich nicht kannte, und ich werde sicherlich verwenden, wenn es darum geht, meine Datenbank in einen bekannten Zustand zurückzusetzen. Ich versuche jedoch, gespeicherte CLR-Prozeduren zu debuggen, und es scheint nicht, dass Marks Methode es mir erlaubt, von meinem Unit-Testprojekt zum SQL-Server zu wechseln und den auf dem Server sitzenden Code zu debuggen.

Ich versuche, das C # auf dem Server zu debuggen, ähnlich wie die Lösung pho3nix unten aufgeführt. Bei Verwendung dieses Standardansatzes müssen Sie jedoch Ihre Testskripts mit einer Datei "Test.sql" schreiben und kein Einheitentestprojekt in Visual Studio verwenden.

Ich hoffe, ich kann zwei Projekte in meiner Lösung haben, eine für meine gespeicherten CLR-Prozeduren und eine für mein Unit-Test-Projekt. Wenn ich meine Tests in meinem Unit-Test-Projekt ausführen möchte, hoffe ich, dass alle Änderungen an meinem CLR-Projekt für gespeicherte Prozeduren auf dem Server veröffentlicht werden, das Testprojekt wird ausgeführt und ich setze einen Breakpoint in der CLR Gespeicherte Prozedur, wenn der Komponententest beginnt, diese gespeicherte Prozedur zu testen, wird es auf dem Server unterbrochen und ich kann dann durch den Code gehen.

Die nächste Lösung, die ich bisher gefunden habe, ist Alex Kuznetsov und Alex Styler , aber mit dieser Lösung kann ich nicht zum SQL Server gehen.

**** UPDATE 2 ****

Dies ist eher ein "Stoß", um diese Frage wieder auf den Tisch zu bringen ... Ich hatte immer noch kein Glück, von den Komponententests zum SQL-Server zu gelangen. Irgendwelche anderen Gedanken?

    
ben 22.06.2009, 17:43
quelle

3 Antworten

2

Sie müssen das SQL / CLR-Debugging für die Verbindung aktivieren, bevor Sie Ihren Code debuggen können. Um dies zu tun, folgen Sie den Anweisungen hier Ссылка

Beachten Sie, dass beim Debuggen von C # SP alle verwalteten Threads im SQL-Server während des Debuggens ausgesetzt werden

Hoffe, das hilft.

    
mfawzymkh 26.06.2009 02:38
quelle
2

Wenn ich ein Projekt erstelle, habe ich einen Baumansichtsknoten mit Datenbank und einem Element namens SQL Server Project.

Alternativtext http://img514.imageshack.us/img514/8523/81345560.jpg

Weiter, wenn die Projektvorlage erstellt wird, erhalte ich Testskripte (Test.sql), wo ich alle meine SQL Server CLR-Klassen mit den üblichen SQL-Prozeduren und -Befehlen testen kann.

alt text http://img17.imageshack.us/img17/7826/38591345.jpg

Damit können Sie eine Entwicklungsschnittstelle für CLR mit Debug haben. Test.sql ist wie eine Unit-Klasse für CLR-Klassen.

PS. Vergessen Sie nicht die aktive CLR in Ihrer SQL Server-Konfiguration.

    
pedrofernandes 01.07.2009 09:23
quelle
1

Ich schrieb ziemlich ausführlich zu diesem Thema vor einiger Zeit. Ich implementiere meine Datenzugriffskomponenten immer auf TDD-Basis. Werfen Sie einen Blick auf den Beitrag im Link - der Artikel selbst bietet Ihnen möglicherweise nicht den besten Überblick, aber Sie können auch den Beispielcode herunterladen und ihn nach Belieben anschauen.

Ich sollte denken, dass es alle Ihre Anforderungen erfüllt.

    
Mark Seemann 29.06.2009 10:12
quelle