6

Attualmente sto utilizzando Visual Studio 2012 RC e SQL Server 2012 RTM.Come ri-distribuire, ricreare il database in ogni esecuzione di prova

Mi piacerebbe sapere come ri-distribuire/ricreare un database di test per ogni esecuzione di test.

Tenere presente che ho un progetto di database SQL Server per il database utilizzando il modello di Visual Studio 2012.

In realtà io non sono molto sicuro di un'idea ho ottenuto nella mia mente, ma .testsettings file è installazione e di pulizia degli script. È questa la strada da percorrere? Ad esempio, uno script PowerShell che legge lo script generato dal progetto del database e lo esegue sul database?

Suppongo che ci siano modi migliori per farlo e dovrebbe essere una soluzione pronta all'uso, ma la ignoro e Google non mi aiuta a trovare la soluzione giusta.

+0

Si desidera distribuire e testare su SQL Server o contro LocalDB? Se stai ricostruendo ogni volta, ti suggerirei di provare contro LocalDB. Inoltre, stai usando TFS o qualcos'altro come agente di creazione? Con "esegui tutti i test" intendi la selezione manuale per eseguire tutti i test o una qualche forma di automazione (ad es. Dopo ogni build, CI, gated check in ecc.)? –

+0

@ aclear16 Voglio distribuire contro SQL Server. Per ora, non è per TFS Build, è per l'esecuzione manuale dei test ordinati. –

risposta

3

Come accennato probabilmente vorrai utilizzare VS 2012 .Local.testsettings> Script di installazione e pulizia per creare/distruggere il database di SQL Server.

enter image description here

Per lo script si consiglia di utilizzare PowerShell con un .dacpac (e non solo uno script T-SQL), dal momento che si sta utilizzando un progetto SSDT. Ecco un codice link per alcuni esempi: in particolare potresti dare un'occhiata al comando 'Deploy-Dac'.

Se non si ha familiarità con .dacpacs come l'output (build) di progetti di database creati da SSDT, dare un'occhiata a questo riferimento link.

+0

Grazie, ci provo. Fammi controllare le tue istruzioni :) –

+0

È possibile avviare uno script PowerShell direttamente come script di installazione e pulizia? –

+0

Ad esempio, cosa ne pensi dell'approccio di aclear16 a LocalDB (vedi il suo commento nella domanda stessa). –

2

La soluzione più veloce, anche se un po 'incisiva, è davvero semplice. È possibile impostare le proprietà dei progetti DB nella scheda di debug su "DB sempre ricreato". Quindi prova in due clic, esegui un debug/build, quindi esegui tutti i test. Si dovrebbe ottenere un DB appena creato su localDB per i test da eseguire contro. È inoltre possibile modificare la destinazione per il DB di debug (di nuovo le proprietà dei progetti DB) in base a ciò che si desidera, in modo da poter essere distribuiti su un .dacpac o su un DB SQL esistente o ovunque. Significa test in due passaggi, e se la tua build è lunga, potrebbe essere fastidiosa, ma funziona. Altrimenti, credo che lo scripting sia la tua unica opzione.

2

Modifica: Sebbene questo non risponda alla domanda in un modo semplice di SQL Server, un semplice approccio a Entity Framework sarebbe il seguente: Ho scoperto che potevo creare e distruggere il mio database ogni volta correttamente utilizzando DbContext.Database .CreateIfNotExists() e DbContext.Database.Delete() metodi nelle mie fasi di installazione e pulizia dei miei test.

+0

Bene, questo è quando si utilizza EF :) –

+0

Il mio male ... whoops. – CokoBWare

+0

Beh, in realtà è utile aver aggiunto queste informazioni per i futuri visitatori! +1;) –

Problemi correlati