2009-06-22 22 views
9

Mi sto solo utilizzando VS2008 per scrivere le stored procedure clr per SQL 2008. Quando si scrive codice C# sono abituato ad avere un "Progetto Test" separato dove metterei tutti i miei codice di test unitario, tuttavia appare a prima vista che non posso avere la stessa impostazione con un progetto clr sql con stored procedure. E 'come se questo potesse essere fatto, e mi mancano un paio di parametri di configurazione, ma non sono sicuro di cosa potrebbero essere.CLR SQL stored procedure test con Unit Test Project

Sto usando

  • Visual Studio 2008
  • MS test
  • MS SQL 2008

miei requisiti sono:

  1. di debug stored procedure in Visual studio debugger
  2. avere un gruppo di unit test per testare le stored procedure

Qualcuno sa come posso avere il progetto di test unità depoly correttamente le stored procedure al server, collegare fino al server SQL, e mi permettono di passare attraverso il test dell'unità alle procedure memorizzate che si trovano sul server?

**** **** UPDATE

Grazie a tutti per le risposte finora, ma non sono excatly quello che sto cercando.

Mark Seemann's risposta di seguito è un approccio interessante che non sapevo, e sicuramente userò quando si tratta di ripristinare il mio database a uno stato conosciuto. Tuttavia, sto cercando di eseguire il debug delle stored procedure CLR e non sembra che il metodo di Mark mi consenta di passare dal mio progetto di test dell'unità, al server SQL e di eseguire il debug del codice che si trova sul server.

Sto cercando di eseguire il debug del C# sul server, molto simile alla soluzione pho3nix elencata di seguito. Tuttavia, utilizzando questo approccio standard è necessario scrivere gli script di test utilizzando un file "Test.sql" e non utilizzando un progetto di test unitario da Visual Studio.

Spero di poter avere due progetti nella mia soluzione, uno per le mie stored procedure CLR e uno per il mio progetto di test dell'unità. Quando voglio eseguire i miei test nel mio progetto di test dell'unità, spero che tutte le modifiche apportate al mio progetto di procedura memorizzata CLR vengano pubblicate sul server, il progetto di test inizi l'esecuzione e se imposto un punto di interruzione nel CLR stored procedure quando il test dell'unità inizia a testare la procedura memorizzata che si interromperà sul server e posso quindi scorrere il codice.

La soluzione più vicina che ho trovato finora è Alex Kuznetsov and Alex Styler, tuttavia utilizzando questa soluzione non posso passare al server SQL.

**** **** UPDATE 2

Questo è più di un 'urto' per portare questa domanda back up ... Ho ancora avuto fortuna di lancio per il server SQL dall'unità test. Qualche altro pensiero?

risposta

2

È necessario abilitare il debug SQL/CLR sulla connessione prima di poter eseguire il debug del codice. al fine di farlo, seguire le istruzioni qui http://msdn.microsoft.com/en-us/library/ms165039(VS.80).aspx

Si noti che durante il debug C# SP, tutti i thread gestiti nel server SQL sospenderanno durante il debug

Spero che questo aiuti.

1

I wrote pretty extensively on this subject qualche tempo fa. Implemento sempre i miei componenti di accesso ai dati in modalità TDD. Dai un'occhiata al post nel link - l'articolo stesso potrebbe non fornirti la migliore panoramica, ma puoi anche scaricare il codice di esempio e controllarlo a tuo piacimento.

Penso che soddisfi tutte le vostre esigenze.

2

Quando si crea un progetto, si dispone di un nodo di treeview con database e un oggetto denominato SQL Server Project.

alt text http://img514.imageshack.us/img514/8523/81345560.jpg

successivo quando si crea un modello di progetto ottengo gli script di test (Test.sql) dove posso testare tutte le mie classi CLR di SQL Server, utilizzando le procedure SQL comuni e comandi.

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

Con questo si può avere un'interfaccia di sviluppo per CLR con il debug. Test.sql è come una classe di unità per le classi CLR.

PS. Non dimenticare CLR attivo nella configurazione di SQL Server.