Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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. Vous pouvez valider les résultats à l’aide de conditions de test. Par exemple, vous pouvez utiliser une condition de test pour vérifier le nombre de lignes retournées dans un jeu de résultats spécifique ou pour vérifier la durée d’exécution d’un test particulier. Pour plus d’informations sur les conditions de test, consultez Utiliser des conditions de test dans des tests unitaires SQL Server.
Au lieu d’utiliser des conditions de test, vous pouvez également utiliser des assertions Transact-SQL, qui sont THROW ou RAISERROR des instructions dans un script Transact-SQL. Dans certaines circonstances, vous préférerez peut-être utiliser une assertion Transact-SQL au lieu d’une condition de test.
Utiliser des assertions Transact-SQL
Vous devez prendre en compte les points suivants avant de décider de valider les données à l’aide de Transact-SQL assertions ou en utilisant 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 de la langue. Vous préférerez peut-être un langage particulier basé sur votre expertise actuelle et choisissez donc Transact-SQL assertions ou conditions de test C# ou Visual Basic.
Validation compliquée. Dans certains cas, vous pouvez générer des tests plus complexes en 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 avez déjà du code qui effectue la validation, vous pouvez l’utiliser dans un test unitaire SQL Server au lieu d’utiliser des conditions de test.
Marquer les méthodes de test unitaire avec l’exception attendue
Pour marquer une méthode de test unitaire SQL Server avec 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)]
Where:
- nnnnn est le nombre du message attendu, par exemple 14025
- x est la 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 transmettez ces paramètres à l’instruction RAISERROR dans votre code de base de données. Si vous spécifiez MatchFirstError = true, l’attribut correspond à l’un des sqlErrors dans l’exception. Le comportement par défaut (MatchFirstError = true) est de correspondre uniquement à la première erreur qui se produit.
Pour obtenir un exemple d’utilisation des exceptions attendues et d’un test unitaire SQL Server négatif, consultez procédure pas à pas : Créer et exécuter un test unitaire SQL Server.
L'instruction RAISERROR
Note
Utilisez THROW au lieu de RAISERROR.
RAISERROR est maintenant déconseillé.
Vous pouvez utiliser directement des assertions Transact-SQL sur le serveur à l’aide de l’instruction RAISERROR de votre script Transact-SQL. Sa syntaxe est la suivante :
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)
where:
-
@ErrorMessageest tout message d’erreur défini par l’utilisateur. Vous pouvez mettre en forme cette chaîne de message similaire à laprintf_sfonction. -
@ErrorSeverityest un niveau de gravité défini par l’utilisateur de 0 à 18.
Note
Les valeurs « 0 » et « 10 » pour le niveau de gravité ne provoquent pas l’échec du test unitaire SQL Server. Vous pouvez utiliser n’importe quelle autre valeur de la plage 0 à 18 pour provoquer l’échec du test.
@ErrorState est un entier arbitraire compris entre 1 et 127. Vous pouvez utiliser cet entier pour différencier les occurrences d’une seule erreur déclenchée à différents emplacements dans le code.
Pour plus d’informations, consultez RAISERROR. Un exemple d’utilisation RAISERROR dans un test unitaire SQL Server est fourni dans l’article : Écrire un test unitaire SQL Server qui s’exécute dans l’étendue d’une transaction unique.