Compartir a través de


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

En una prueba unitaria de base de datos, se ejecuta un script de prueba de Transact-SQL y se devuelve un resultado. A veces, los resultados se devuelven como un conjunto. Puede validar los resultados utilizando las 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 Transact-SQL, que son instrucciones RAISERROR en un script de Transact-SQL. En determinadas circunstancias, es posible que prefiera utilizar una aserción Transact-SQL y no una condición de prueba.

Utilizar las aserciones Transact-SQL

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

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

  • Familiaridad con el lenguaje. Quizá prefiera un lenguaje que se ajuste a sus conocimientos y, por consiguiente, elegir bien aserciones Transact-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 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.

Marcar los métodos de pruebas unitarias con la excepción esperada

Para marcar un método de prueba unitaria de base de datos con excepciones esperadas, agregue el siguiente atributo:

<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]

Donde:

  • nnnnn es el número del mensaje esperado, por ejemplo 14025

  • x es la gravedad de la excepción esperada

  • y es el estado de la excepción esperada

Se omite cualquier parámetro no especificado. Pase estos parámetros a la instrucción RAISERROR en el código de la base de datos. Si especifica MatchFirstError = true, el atributo coincidirá con cualquiera de los errores SqlError de la excepción. El comportamiento predeterminado (MatchFirstError = true) es coincidir solo con el primer error que se produce.

Para ver un ejemplo de cómo utilizar excepciones esperadas y una prueba unitaria de base de datos negativa, vea Tutorial: Crear y ejecutar una prueba unitaria de base de datos.

Instrucción RAISERROR

Si desea utilizar aserciones Transact-SQL directamente en el servidor, puede incluir la instrucción RAISERROR en el script Transact-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) 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

Comprobar código de base de datos mediante pruebas unitarias