Compartir a través de


Scripts en pruebas unitarias de base de datos

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:

  • script Transact-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 Transact-SQL de la acción de prueba es el único componente que debe incluirse en todas las pruebas unitarias de base de datos. Además del script de prueba, tal vez desee especificar las condiciones de la prueba para comprobar que el script de prueba devolvió el valor o conjunto de valores como se esperaba. La acción de prueba ejercita o modifica un objeto concreto de la base de datos y después 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 Transact-SQL y cero o más condiciones de prueba. Puede utilizar una acción anterior a la prueba para asegurarse de que la base de datos está en un estado que permite que se ejecuta la acción de pruebas y devolver los resultados significativos. Por ejemplo, puede utilizar una acción anterior a la prueba para comprobar que una tabla contiene los datos antes de que el script de prueba realice una operación en 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, puede usar 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 Transact-SQL durante la ejecución de una prueba unitaria de base de datos individual. El único script obligatorio es el script Transact-SQL de la acción de prueba; los scripts comunes y los scripts anteriores y posteriores 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

Descripción

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 para las características de base de datos de Visual Studio.

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:

Dos pruebas unitarias de base de datos

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 scripts 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, Visual Studio Premium 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 anterior 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