Tutorial: Crear y ejecutar una prueba unitaria de base de datos
Actualización: noviembre 2007
En este tutorial, creará una prueba unitaria de base de datos para un script Transact-SQL (T-SQL) sencillo. Para poder crear cualquier prueba unitaria de base de datos, debe tener o crear un proyecto de base de datos para la base de datos que desea probar. Además, la base de datos debe contener datos para que la prueba devuelva resultados significativos.
En el primer procedimiento de este tutorial, se crea un proyecto de base de datos y se importa el esquema de la base de datos Northwind. Después de crear el proyecto, se crea un plan de generación de datos para generar los datos de una columna en la tabla Orders. A continuación debe crear un proyecto que contenga la prueba, escribir la propia prueba y ejecutarla para comprobar si el script funciona como esperaba.
Requisitos previos
Para realizar este tutorial debe poder conectarse a un servidor de bases de datos que tenga instalada la base de datos Northwind.
Para crear un proyecto de base de datos
En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.
Aparecerá el cuadro de diálogo Nuevo proyecto.
En Tipos de proyecto, expanda el nodo Proyectos de base de datosy haga clic en Microsoft SQL Server.
En la lista Plantillas, haga clic en Asistente para SQL Server 2000.
En Nombre, escriba TestNorthwind.
En la lista Solución, elija Crear nueva solución si aún no aparece resaltado.
Active la casilla Crear directorio para la solución si aún no está activada.
Desactive la casilla Agregar al control de código fuente si aún no está desactivada y haga clic en Aceptar.
Aparecerá el Asistente para nuevo proyecto de base de datos. El siguiente paso será utilizar este asistente para configurar su proyecto de base de datos e importar el esquema de base de datos inicial.
Para configurar el proyecto e importar un esquema de base de datos
Haga clic en Siguiente después de leer la primera página del asistente.
Dado que la base de datos Northwind contiene sólo un esquema, haga clic en Organizar el proyecto por tipo de objeto.
Nota importante: No puede cambiar la organización de un proyecto después de crearlo.
En Especifique el esquema predeterminado para usar con los objetos que cree en el proyecto de base de datos, acepte el valor predeterminado dbo.
En la página Establecer opciones de base de datos, acepte la configuración predeterminada y haga clic en Siguiente.
Nota: Puede cambiar estas opciones una vez creado el proyecto. Para obtener más información, vea Cómo: Configurar proyectos de base de datos para la compilación e implementación.
En la página Importar esquema de base de datos, active la casilla Importar esquema existente.
En Conexión de base de datos de origen, haga clic en la conexión que corresponde al servidor y a la base de datos que contiene la base de datos Northwind. Si la conexión no existe, haga clic en Nueva conexión para crearla. Si no especifica una conexión, se creará el proyecto de base de datos pero no se importará ningún esquema.
Nota: Podrá importar un esquema de base de datos más adelante si el proyecto de base de datos todavía no contiene objetos de base de datos. Para obtener más información, vea Cómo: Importar un esquema de base de datos.
Acepte las opciones de importación predeterminadas y haga clic en Siguiente.
En la página Configurar generación e implementación, en Conexión de destino, haga clic en el botón Examinar y especifique una conexión al servidor de bases de datos donde desea crear su entorno de desarrollo aislado.
Para crear una nueva instancia local de la base de datos, en el cuadro de diálogo Propiedades de la conexión, escriba (local) en Nombre del servidor y haga clic en Utilizar autenticación de Windows. Haga clic en Aceptar.
En Nombre de la base de datos de destino, escriba TestNorthwind si aún no se ha especificado.
En Intercalación predeterminada de implementación, haga clic en Usar intercalación del servidor.
Este paso hace que la base de datos de destino utilice la intercalación del proyecto de base de datos.
Desactive la casilla Bloquear implementación incremental si puede dar lugar a pérdida de datos.
Dado que el entorno de desarrollo aislado sólo contendrá datos de prueba generados, puede permitir que se produzca la pérdida de datos.
Haga clic en Finalizar para crear el proyecto de base de datos e importar la base de datos.
Para examinar el proyecto resultante
En el Explorador de soluciones, expanda el nodo TestNorthwind y expanda el nodo secundario Objetos de esquema.
Explore los subnodos que se encuentran bajo el nodo Objetos de esquema en la jerarquía.
El Explorador de soluciones contiene los archivos que definen los objetos que están en el esquema de la base de datos desde la que los importó.
En el menú Ver, haga clic en Otras ventanas y elija Vista de esquema.
En Vista de esquema, expanda el nodo TestNorthwind.
Explore los subnodos que se encuentran debajo del nodo TestNorthwind en la jerarquía.
La Vista de esquema contiene los objetos definidos en los archivos que aparecen en el Explorador de soluciones.
En el Explorador de soluciones, haga clic en el nodo TestNorthwind.
En el menú Proyecto, haga clic en Propiedades de TestNorthwind.
En la página de propiedades, haga clic en la ficha Generar.
En Nombre de la base de datos de destino, escriba TestNorthwind.
En el menú Archivo, haga clic en Guardar los elementos seleccionados.
En el Explorador de soluciones, haga clic en el proyecto TestNorthwind.
En el menú Generar, haga clic en Generar solución.
En el menú Generar, haga clic en Implementar TestNorthwind.
Nota: Cada desarrollador especificará la cadena de conexión al servidor de bases de datos donde desee hospedar su copia de la base de datos.
A continuación, especificará un plan de generación de datos para llenar la base de datos de desarrollo aislada con datos de prueba realistas.
Para crear un plan de generación de datos
En el Explorador de soluciones, expanda el nodo TestNorthwind y haga clic en la carpeta Planes de generación de datos.
En el menú Proyecto, haga clic en Agregar nuevo elemento.
Aparecerá el cuadro de diálogo Agregar nuevo elemento.
En la lista Plantillas, haga clic en Plan de generación de datos.
En Nombre, escriba TestNW.dgen y haga clic en Agregar.
El plan de generación de datos denominado TestNW se agregará al proyecto de base de datos y se abrirá en el editor. El esquema de base de datos se importa al plan de generación de datos. Después, deberá modificar ese plan para generar datos de prueba más realistas.
Para definir el plan de generación de datos para la tabla Orders
Haga clic en dbo.Orders en el plan de generación de datos.
En el menú Datos, elija Generador de datosy haga clic en Detalles de columna.
Aparecerá la ventana Detalles de columna con las columnas de la tabla Orders, sus tipos de datos, el generador predeterminado asociado a cada columna y el resultado del generador.
En el panel Detalles de columna, haga clic en ShipCity y establezca el campo Generador en Generador enlazado a datos.
Este paso indica que desea rellenar esta columna con los resultados de una consulta.
En el menú Ver, haga clic en Ventana Propiedades.
En la ventana Propiedades, vaya a la sección Generador. En la propiedad Información de conexión, haga clic en la conexión que corresponde a la base de datos desde la que importó el esquema de base de datos en un procedimiento anterior.
Este paso especifica la conexión a bases de datos que desea utilizar para ejecutar la consulta que generará los datos para esta columna.
En la ventana Propiedades, en la sección Generador, en la propiedad Consulta, establezca la cadena de consulta en SELECT * FROM Orders.
Nota: No cambie el valor de inicialización. Este valor es necesario para generar un dato concreto de la base de datos Northwind que se utilizará más adelante en este tutorial.
En el panel Detalles de columna, en el campo Resultado del generador para ShipCity, haga clic en [OutputTable1].[ShipCity].
Este paso selecciona la columna en el conjunto de resultados que desea asociar a esta columna.
Guarde el plan de generación de datos.
El paso siguiente es crear una prueba unitaria de base de datos que utilice estos datos.
Crear una prueba unitaria de base de datos
Para crear una prueba unitaria de base de datos
En Visual Studio, abra el menú Prueba y haga clic en Nueva prueba.
Aparecerá el cuadro de diálogo Agregar nueva prueba.
Haga clic en Prueba unitaria de base de datos.
En Nombre de la prueba, escriba SampleUnitTest.
En Agregar a proyecto de prueba, haga clic en Crear un nuevo proyecto de prueba de Visual C#y haga clic en Aceptar.
Aparecerá el cuadro de diálogo Nuevo proyecto de prueba.
Mantenga el nombre predeterminado para el nuevo proyecto de prueba y haga clic en Crear.
El nuevo proyecto de prueba se agrega a la solución TestNorthwind existente. El proyecto contiene un archivo que se denomina SampleUnitTest.cs, que contiene el código de una nueva clase de prueba para las pruebas unitarias de base de datos. La clase de prueba se denomina SampleUnitTest y contiene un nuevo método de prueba unitaria denominado DatabaseTest1 de manera predeterminada. Puede mantener el nombre de este método de prueba o puede usar un nombre más descriptivo y personalizarlo para devolver resultados de prueba concretos. Para obtener más información, vea Cómo: Abrir una prueba unitaria de base de datos para editarla.
Aparecerá el cuadro de diálogo Configuración del proyecto 'TestProject'.
En Conexiones de base de datos, seleccione la base de datos TestNorthwind en la primera lista desplegable. Su nombre aparece con el formato <Server> TestNorthwind.dbo. Si aparece este nombre, haga clic en él y vaya al paso 9.
Si no aparece la base de datos TestNorthwind, haga clic en Nueva conexión.
Aparece el cuadro de diálogo Propiedades de la conexión.
En el cuadro de diálogo Propiedades de la conexión, identifique el servidor que tiene la base de datos TestNorthwind y haga clic en el tipo de autenticación que desea utilizar. En Seleccione o escriba el nombre de la base de datos, escriba TestNorthwind y haga clic en Aceptar para cerrar el cuadro de diálogo Propiedades de la conexión.
Nota: Después de establecer una conexión con una base de datos, su nombre aparece en el cuadro de diálogo Configuración del proyecto 'TestProject', en Conexiones de base de datos.
En el cuadro de diálogo Configuración del proyecto 'TestProject', active la casilla Usar una conexión de datos secundaria para validar pruebas unitarias.
Nota: Acaba de asignar el mismo valor a ambas cadenas de conexión. En la mayoría de los casos, utilizaría una cadena de conexión que tuviera permisos más elevados para la validación que para la ejecución. Para obtener más información, vea Descripción general de las cadenas de conexión y los permisos.
Active la casilla Generar datos de prueba antes de ejecutar pruebas unitarias.
En la lista desplegable, haga clic en el plan de generación de datos TestNW y, después, en Aceptar. Este plan de generación de datos se aplicará a la base de datos TestNorthwind al ejecutar la prueba unitaria.
Nota: También puede utilizar este cuadro de diálogo para configurar la implementación del esquema. Para obtener más información, vea Cómo: Configurar la ejecución de las pruebas unitarias de base de datos.
Cuando se cierra el cuadro de diálogo Configuración del proyecto 'TestProject', aparece el Diseñador de pruebas unitarias de base de datos.
Para cada condición de prueba que se agrega, se crea código de C# o Visual Basic en un archivo de código fuente.
Genere el proyecto de prueba; para ello, haga clic en él con el botón secundario en el Explorador de soluciones y haga clic en Generar.
Agregue otra prueba unitaria haciendo clic en Agregar prueba (+) en la barra de navegación del Diseñador de pruebas unitarias de base de datos.
Aparecerá el cuadro de diálogo Especifique un nombre para una prueba de base de datos.
Mantenga el nombre predeterminado para el método de prueba y, a continuación, haga clic en Aceptar. Esta acción agrega otra prueba unitaria al proyecto existente. Esta prueba unitaria se crea como un nuevo método de prueba dentro de la clase SampleUnitTest que creó anteriormente.
Ahora ya puede escribir la lógica de la prueba.
Para escribir la prueba unitaria de base de datos
En la barra de navegación del Diseñador de pruebas unitarias de base de datos, haga clic en DatabaseTest1 y asegúrese de que Prueba aparece seleccionado en la lista desplegable adyacente. Esto le permitirá crear el script de prueba para la acción de prueba en la prueba unitaria DatabaseTest1.
Agregue las siguientes instrucciones T-SQL en el editor de T-SQL:
SELECT * from Orders where ShipCity = 'Seattle'
En el panel Condiciones de prueba, haga clic en la condición de prueba cuyo tipo es No concluyente y elimínela haciendo clic en Eliminar condición de prueba (x).
Agregue una condición de prueba de recuento de filas; para ello, haga clic en Recuento de filas en la lista del panel Condiciones de prueba y, después, haga clic en Agregar condición de prueba (+).
En la ventana Propiedades, establezca la propiedad Recuento de filas en 1.
En el menú Archivo, haga clic en Guardar todo.
Ahora ya está listo para ejecutar la prueba.
Para ejecutar la prueba unitaria de base de datos
En el menú Prueba, seleccione Ventanas y, a continuación, haga clic en Vista de pruebas.
La ventana Vista de pruebas muestra dos pruebas. Anteriormente en este tutorial, creó la prueba denominada DatabaseTest1 y le agregó instrucciones de T-SQL y una condición de prueba. La prueba que se denomina DatabaseTest2 está vacía.
Haga clic con el botón secundario en DatabaseTest1 y seleccione Ejecutar selección.
Visual Studio Team System Database utiliza el contexto privilegiado que especificó para conectar con la base de datos y aplicar el plan de generación de datos. A continuación, Database Edition cambia al contexto de ejecución antes de ejecutar el script T-SQL en la prueba. A continuación, Database Edition evalúa los resultados del script T-SQL respecto a los especificados en la condición de prueba y muestra un resultado de evaluación correcta o incorrecta en la ventana Resultados de pruebas.
Vea el resultado en la ventana Resultados de pruebas.
La prueba ha sido correcta, lo que significa que, al ejecutar la instrucción SELECT, se devuelve una fila.
Nota: Si cambia el valor de inicialización para [Orders][ShipCity] en el plan de generación de datos o el número de filas que se deben generar, quizá no obtenga un resultado correcto para la prueba. Si genera 50 filas de datos de Northwind con el valor de inicialización 5, uno de los resultados tendrá Seattle como valor del campo ShipCity.
Pasos siguientes
En un proyecto típico, definiría las pruebas unitarias adicionales para comprobar que todos los objetos de base de datos críticos funcionan correctamente. Cuando el conjunto de pruebas ha finalizado, éstas se comprueban en el control de versiones para compartirlas con el equipo.
Después de establecer una línea base, puede crear y modificar los objetos de base de datos y, a continuación, crear pruebas asociadas para comprobar si un cambio interrumpiría el comportamiento existente.
Vea también
Tareas
Cómo: Crear una prueba unitaria de base de datos vacía
Cómo: Configurar la ejecución de las pruebas unitarias de base de datos
Conceptos
Introducción a la terminología de Database Edition
Otros recursos
Diseñar pruebas unitarias de base de datos
Personalizar pruebas unitarias de base de datos en Visual Basic o en Visual C#