2012-08-10 25 views
6

Actualmente estoy usando Visual Studio 2012 RC y SQL Server 2012 RTM.Cómo volver a implementar, volver a crear la base de datos en cada ejecución de prueba

Me gustaría saber cómo volver a implementar/volver a crear una base de datos de prueba para cada ejecución de prueba.

Tenga en cuenta que tengo un proyecto de base de datos de SQL Server para la base de datos con la plantilla de Visual Studio 2012.

En realidad no estoy muy seguro acerca de una idea que tengo en mi mente, pero .testsettings archivo tiene de configuración y limpieza guiones. ¿Es este el camino a seguir? Por ejemplo, ¿un script de PowerShell lee el script generado del proyecto de base de datos y lo ejecuta en la base de datos?

Supongo que hay mejores formas de hacerlo y debe ser una solución lista para usar, pero lo ignoro y Google no me ayuda a encontrar la solución adecuada.

+0

¿Desea implementar y probar contra SQL Server o contra LocalDB? Si está reconstruyendo cada vez, sugeriría probar contra LocalDB. Además, ¿estás usando TFS, o algo más como agente de compilación? Con "ejecutar todas las pruebas", ¿te refieres a la selección manual para ejecutar todas las pruebas, o alguna forma de automatización (es decir, después de cada compilación, CI, verificación controlada, etc.)? –

+0

@ aclear16 Quiero implementar contra SQL Server. Por ahora, no es para TFS Build, es para ejecutar pruebas ordenadas manualmente. –

Respuesta

3

Como se mencionó, es probable que desee utilizar las secuencias de comandos VS 2012 .Local.testsettings> Setup and Cleanup para crear/derribar su base de datos SQL Server.

enter image description here

Para la secuencia de comandos es posible que desee utilizar PowerShell con un .dacpac (en lugar de sólo un script T-SQL), dado que está utilizando un proyecto SSDT. Aquí hay un link con algún código de ejemplo; en particular, es posible que desee echarle un vistazo al comando 'Desplegar-Dac'.

Si no está familiarizado con .dacpacs como la salida (compilación) de proyectos de base de datos creados por SSDT, eche un vistazo a esta referencia link.

+0

Gracias, lo intentaré. Déjame revisar tus instrucciones :) –

+0

¿Se puede iniciar un script de PowerShell directamente como un script de configuración y limpieza? –

+0

En caso, ¿qué opinas sobre el enfoque de localDB de aclear16? (Ver su comentario en la pregunta). –

2

La solución más rápida, aunque un poco hack, es realmente sencilla. Puede establecer las propiedades de proyectos de DB en la pestaña de depuración para "siempre volver a crear DB". Luego prueba con dos clics, realiza una depuración/compilación y luego ejecuta todas las pruebas. Debería obtener un DB recién construido en localDB para que se ejecuten las pruebas. También puede cambiar el destino para la base de datos de depuración (de nuevo las propiedades de proyectos de DB) a lo que desee, para que pueda implementarlo en .dacpac, en una base de datos SQL existente o en cualquier otro lugar. Significa probar en dos pasos, y si su construcción es larga, puede ser molesto, pero funciona. De lo contrario, creo que las secuencias de comandos son su única opción.

2

Editar: Aunque esto no responde la pregunta de una manera sencilla de SQL Server, un enfoque sencillo de Entity Framework sería el siguiente: descubrí que podía crear y destruir mi base de datos cada vez correctamente utilizando DbContext.Database Métodos .CreateIfNotExists() y DbContext.Database.Delete() en mis fases de configuración y limpieza de mis pruebas.

+0

Bueno, eso es cuando estás usando EF :) –

+0

Mi mal ... Ups. – CokoBWare

+0

Bueno, en realidad es útil que hayas agregado esta información para futuros visitantes. +1;) –

Cuestiones relacionadas