Partager via


Utilisation d'assertions Transact-SQL dans les tests unitaires SQL Server

 

Dans un test unitaire SQL Server, un script de test Transact-SQL s'exécute et retourne un résultat.Parfois, les résultats sont retournés sous la forme d'un jeu de résultats.Validez les résultats à l'aide de conditions de test.Par exemple, utilisez une condition de test pour vérifier le nombre de lignes qui ont été retournées dans un jeu de résultats spécifique ou pour vérifier le temps qui a été nécessaire à l'exécution d'un test spécifique.Pour plus d'informations sur les conditions de test, consultez Utilisation de conditions de test dans les tests unitaires SQL Server.

Au lieu d'utiliser des conditions de test, vous pouvez également utiliser des assertions Transact-SQL, qui sont des instructions THROW ou RAISERROR dans un script Transact-SQL.Dans certaines circonstances, vous devrez peut-être utiliser une assertion Transact-SQL plutôt qu'une condition de test.

Utilisation d'assertions Transact-SQL

Vous devez tenir compte des points suivants avant de décider de valider des données en utilisant des assertions Transact-SQL ou des conditions de test.

  • Performance.Il est plus rapide d'exécuter une assertion Transact-SQL sur le serveur que de déplacer les données vers un ordinateur client et de les manipuler localement.

  • Connaissance du langage.Vous pouvez préférer un langage particulier selon vos compétences et donc choisir des assertions Transact-SQL ou Visual C# ou des conditions de test Visual Basic.

  • Validation compliquée.Dans certains cas, vous pouvez créer des tests plus complexes dans Visual C# ou Visual Basic et valider vos tests sur le client.

  • Simplicité.Il est souvent plus simple d'utiliser une condition de test prédéfinie que d'écrire le script équivalent dans Transact-SQL.

  • Bibliothèques de validation héritées.Si vous disposez déjà du code qui effectue la validation, utilisez-le dans un test unitaire SQL Server plutôt que d'utiliser des conditions de test.

Marquer les méthodes de test unitaire par l'exception attendue

Pour marquer une méthode de test unitaire SQL Server par des exceptions attendues, ajoutez l'attribut suivant :

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

Où :

  • nnnnn est le numéro du message attendu, par exemple 14025.

  • x est le niveau de gravité de l'exception attendue.

  • y est l'état de l'exception attendue.

Tous les paramètres non spécifiés sont ignorés.Vous passez ces paramètres à l'instruction RAISERROR dans votre code de base de données.Si vous spécifiez MatchFirstError = true, l'attribut correspond à une des erreurs SqlErrors dans l'exception.Le comportement par défaut (MatchFirstError = truei) n'est utilisé que pour correspondre à la première erreur qui se produit.

Pour obtenir un exemple d'utilisation des exceptions attendues et de test unitaire SQL Server négatif, consultez Procédure pas à pas : création et exécution d'un test unitaire SQL Server.

Instruction RAISERROR

Notes

Utilisez l'instruction THROW plutôt que RAISERROR.L'instruction RAISERROR est désormais déconseillée.

Utilisez directement des assertions Transact-SQL sur le serveur à l'aide de l'instruction RAISERROR dans le script Transact-SQL.Sa syntaxe est la suivante :

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

où :

@ErrorMessage est un message d'erreur défini par l'utilisateur.Vous pouvez mettre en forme cette chaîne de message de la même façon que la fonction printf_s.

@ErrorSeverity est un niveau de gravité défini par l'utilisateur compris entre 0 et 18.

Notes

Les valeurs « 0 » et « 10 » du niveau de gravité ne provoquent pas l'échec du test unitaire SQL Server.Utilisez toute autre valeur comprise entre 0 et 18 pour provoquer l'échec du test.

@ErrorState est un entier aléatoire compris entre 1 et 127.Utilisez cet entier pour distinguer les occurrences d'une erreur qui se produit à différents emplacements dans le code.

Pour plus d'informations, consultez RAISERROR (Transact-SQL).Un exemple d'utilisation de l'instruction RAISERROR dans un test unitaire SQL Server est disponible dans la rubrique Procédure : écrire un test unitaire SQL Server qui s'exécute dans l'étendue d'une seule transaction.

Voir aussi

Création et définition de tests unitaires SQL Server
Utilisation de conditions de test dans les tests unitaires SQL Server
Vérification du code de la base de données à l'aide de tests unitaires SQL Server
Procédure : ouvrir un test unitaire SQL Server à modifier