Scripts en pruebas unitarias de base de datos
Actualización: noviembre 2007
Cada prueba unitaria de base de datos contiene una sola acción anterior a la prueba, una acción de prueba y una acción posterior a la prueba. Cada uno de estas acciones contiene a su vez lo siguiente:
un script T-SQL que se ejecuta en una base de datos
cero o más condiciones de prueba para evaluar los resultados devueltos por la ejecución del script.
El script de prueba T-SQL de la acción de prueba es el único componente que hay que incluir obligatoriamente en cada prueba unitaria de base de datos. Además del script de prueba, es probable que desee especificar condiciones de prueba para comprobar si el script de prueba devolvió el valor o conjunto de valores esperado. La acción de pruebas usa o cambia un objeto determinado de esa base de datos y, a continuación, evalúa el cambio.
Para cada acción de prueba puede incluir una acción anterior a la prueba y una acción posterior a la prueba. De manera similar a la acción de prueba, cada acción anterior a la prueba y cada acción posterior a la prueba contiene un script T-SQL y cero o más condiciones de prueba. Puede usar una acción anterior a la prueba para asegurarse de que la base de datos está en un estado que permite a la acción de prueba ejecutarse y devolver resultados significativos. Por ejemplo, puede usar una acción anterior a la prueba para comprobar que una tabla contiene datos antes de que el script de prueba ejecute una operación con esos datos. Después de que la acción anterior a la prueba haya preparado la base de datos y la acción de prueba devuelva resultados significativos, la acción posterior a la prueba devuelve la base de datos al estado en que estaba antes de la ejecución de la acción anterior a la prueba. En algunos casos, podría utilizar la acción posterior a la prueba para validar los resultados de la acción de prueba, ya que la acción posterior a la prueba puede tener en la base de datos privilegios superiores a los de la acción de prueba. Para obtener más información, vea Descripción general de las cadenas de conexión y los permisos.
Además de estas tres acciones, también hay dos scripts de prueba (denominados scripts comunes) que se ejecutan antes y después de la ejecución de una prueba unitaria de base de datos. En consecuencia, se pueden ejecutar hasta cinco scripts de T-SQL durante la ejecución de una prueba unitaria de base de datos individual. El único script obligatorio es el script T-SQL de la acción de prueba; los scripts comunes y los scripts de ejecución anterior y posterior a la prueba son opcionales.
La tabla siguiente proporciona una lista completa de scripts asociados a cualquier prueba unitaria de base de datos.
Acción |
Tipo de script |
Description |
---|---|---|
TestInitialize |
Script común (inicialización) |
(Opcional) Este script precede a todas las acciones de prueba y de ejecución previa a la prueba en la prueba unitaria. El script TestInitialize se ejecuta antes que cada prueba unitaria de una clase de prueba determinada. Se ejecuta en el contexto privilegiado. |
Anterior a la prueba |
Script de prueba |
(Opcional) Este script forma parte de la prueba unitaria. El script anterior a la prueba se ejecuta antes que la acción de prueba en una prueba unitaria. Se ejecuta en el contexto privilegiado. |
Test |
Script de prueba |
(Requerido) Este script forma parte de la prueba unitaria. El script de prueba se ejecuta en la base de datos. Por ejemplo, este script puede ejecutar un procedimiento almacenado que recupere, inserte o actualice valores de tabla. Se ejecuta en el contexto de ejecución. |
Posterior a la prueba |
Script de prueba |
(Opcional) Este script forma parte de la prueba unitaria. El script posterior a la prueba se ejecuta después de una prueba unitaria individual. Se ejecuta en el contexto privilegiado. |
TestCleanup |
Script común (limpieza) |
(Opcional) Este script se ejecuta después de la prueba unitaria. El script TestCleanup se ejecuta después de todas las pruebas unitarias de una clase de prueba determinada. Se ejecuta en el contexto privilegiado. |
Para obtener más información sobre los distintos contextos de seguridad en los que se ejecuta cada uno de estos scripts, vea Descripción general de las cadenas de conexión y los permisos y la sección sobre permisos de pruebas unitarias de base de datos en Permisos necesarios en Database Edition.
Orden de ejecución de los scripts
Es importante comprender el orden en que debe ejecutarse cada script. Aunque no puede cambiar el orden, puede decidir qué scripts desea ejecutar. La ilustración siguiente incluye la selección de scripts que puede usar en una ejecución de prueba que contiene dos pruebas unitarias de base de datos y muestra el orden en que se ejecutan:
Nota: |
---|
Los cambios de generación de datos y de implementación de base de datos se aplican al principio de la ejecución de la prueba, antes de que se ejecuten scripts. Estos cambios se aplican a través de la cadena de conexión del contexto privilegiado. Para obtener más información, vea Cómo: Configurar la ejecución de las pruebas unitarias de base de datos. |
Scripts de inicialización y limpieza
En el Diseñador de pruebas unitarias de base de datos, los script TestCleanup y TestInitialize se denominan scripts comunes. En el ejemplo anterior se supone que las dos pruebas unitarias forman parte de la misma clase de prueba. En consecuencia, comparten los mismos scripts TestInitialize y TestCleanup. Esto es siempre así para todas las pruebas unitarias de una clase de prueba única. Sin embargo, si la ejecución de la prueba contiene pruebas unitarias de distintas clases de prueba, los scripts comunes de la clase de prueba asociada se ejecutarán antes y después de la ejecución de la prueba unitaria.
Si sólo escribe pruebas unitarias en el Diseñador de pruebas unitarias de base de datos, es posible que no esté familiarizado con el concepto de clase de prueba. Cada vez que crea una prueba unitaria abriendo el menú Prueba y haciendo clic en Nueva prueba, Database Edition genera una clase de prueba. Las clases de prueba se muestran en el Explorador de soluciones con el nombre de prueba especificado, seguido de una extensión .cs o .vb. Dentro de cada clase de prueba se almacenan pruebas unitarias individuales como métodos de prueba. Sin embargo, independientemente del número de métodos de prueba (es decir, pruebas unitarias), cada clase de pruebas puede tener un solo script TestInitialize y un solo script TestCleanup (o ninguno).
Puede usar el script TestInitialize para preparar la base de datos de prueba y el script TestCleanup para restaurar un estado conocido en la base de datos de prueba. Por ejemplo, podría usar TestInitialize para crear un procedimiento almacenado auxiliar que se ejecute posteriormente, en el script de prueba, para probar un procedimiento almacenado distinto.
Scripts aanterior y posterior a la prueba
Es probable que los scripts asociados con las acciones anterior y posterior a la prueba cambien de una prueba unitaria a otra. Puede usar estos scripts para establecer cambios incrementales en la base de datos y, a continuación, limpiar dichos cambios.
Vea también
Conceptos
Utilizar condiciones de prueba en las pruebas unitarias de base de datos