Utilizar aserciones T-SQL en pruebas unitarias de base de datos

Actualización: noviembre 2007

En una prueba unitaria de base de datos, se ejecuta un script de prueba Transact-SQL (T-SQL) y se devuelve un resultado. A veces, los resultados se devuelven como un conjunto de resultados. Los resultados se pueden validar mediante condiciones de prueba. Por ejemplo, puede utilizar una condición de prueba para comprobar cuántas filas se devolvieron en un conjunto de resultados concreto o cuánto tiempo tardó en ejecutarse una prueba determinada. Para obtener más información acerca de las condiciones de prueba, vea Utilizar condiciones de prueba en las pruebas unitarias de base de datos.

En lugar de utilizar condiciones de prueba, también puede utilizar aserciones T-SQL, que son instrucciones RAISERROR en un script T-SQL. En determinadas circunstancias, es posible que prefiera utilizar una aserción T-SQL y no una condición de prueba.

Utilizar aserciones T-SQL

Debería tener en cuenta los puntos siguientes antes de decidir si va a validar los datos mediante aserciones T-SQL o condiciones de prueba.

  • Rendimiento. Es más rápido ejecutar una aserción T-SQL en el servidor que mover primero los datos a un equipo cliente y manipularlos localmente.

  • Familiaridad con el lenguaje. Quizás prefiera un lenguaje que se ajuste a sus conocimientos y, por consiguiente, elegir bien aserciones T-SQL o bien condiciones de prueba de C# o Visual Basic.

  • Validación compleja. En algunos casos, puede generar una validación de pruebas más compleja en C# o en Visual Basic y validar las pruebas en el cliente.

  • Bibliotecas de validación heredadas. Si ya tiene código de validación, puede utilizarlo en una prueba unitaria de base de datos en lugar de utilizar condiciones de prueba.

Instrucción RAISERROR

Si desea utilizar aserciones T-SQL directamente en el servidor, puede incluir la instrucción RAISERROR en el script T-SQL. Su sintaxis es la siguiente:

**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**

donde:

@ ErrorMessage es cualquier mensaje de error definido por el usuario. A esta cadena de mensaje puede aplicar un formato similar al de la función printf_s.

@ ErrorSeverity es un nivel de gravedad definido por el usuario (de 0 a 18).

Nota:

Los valores de nivel de gravedad 0 y 10 no hacen que se produzca un error en la prueba unitaria de base de datos. Puede utilizar cualquier otro valor en el intervalo comprendido entre 0 y 18 para hacer que la prueba genere un error.

@ ErrorState es un entero arbitrario entre 1 y 127. Puede utilizar este entero para diferenciar las apariciones de un mismo error que se produce en distintos lugares del código.

Para obtener más información, vea "RAISERROR (Transact-SQL)" (https://www.microsoft.com/spanish/msdn/latam/vstudio/teamsystem) en los Libros en pantalla de SQL Server. En el tema Cómo: Escribir una prueba unitaria de base de datos que se ejecute en el ámbito de una transacción individual dispone de un ejemplo del uso de RAISERROR en una prueba unitaria de base de datos.

Vea también

Tareas

Cómo: Abrir una prueba unitaria de base de datos para editarla

Conceptos

Utilizar condiciones de prueba en las pruebas unitarias de base de datos

Introducción a la terminología de Database Edition

Otros recursos

Descripción general de las pruebas unitarias de base de datos