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 ou plusieurs scripts de test Transact-SQL sont exécutés. Les résultats peuvent être évalués dans le script Transact-SQL et THROWRAISERROR utilisés pour retourner une erreur et échouer le test, ou les conditions de test peuvent être définies dans le test pour évaluer les résultats. Le test retourne une instance de la classe SqlExecutionResult . L’instance de cette classe contient un ou plusieurs DataSets, le temps d’exécution et les lignes affectées par le script. Toutes ces informations sont collectées pendant l’exécution du script. Ces résultats peuvent être évalués à l’aide de conditions de test. SQL Server Data Tools fournit un ensemble de conditions de test prédéfinies. Vous pouvez également créer et utiliser des conditions personnalisées ; consultez conditions de test personnalisées pour les tests unitaires SQL Server.
Conditions de test prédéfinies
Le tableau suivant répertorie les conditions de test prédéfinies que vous pouvez ajouter à l’aide du volet Conditions de test dans le Concepteur de tests unitaires SQL Server.
| Condition de test | Description de la condition de test |
|---|---|
| Checksum de données | Échoue si la somme de contrôle du jeu de résultats retournée par le script Transact-SQL ne correspond pas à la somme de contrôle attendue. Pour plus d’informations, consultez Spécification d’une somme de contrôle des données. Note: Cette condition de test n’est pas recommandée si vous retournez des données qui varient entre les exécutions de test. Par exemple, si votre jeu de résultats contient des dates ou des heures générées ou contient des colonnes d’identité, vos tests échouent, car la somme de contrôle est différente sur chaque exécution. |
| Jeu de résultats vide | Échoue si le jeu de résultats retourné à partir du script Transact-SQL n’est pas vide. |
| Durée d’exécution | Échoue si le script de test Transact-SQL prend plus de temps que prévu pour s’exécuter. La durée d’exécution par défaut est de 30 secondes. Le temps d’exécution s’applique uniquement au test de script de test, et non au script de pré-test ou au script post-test. |
| Schéma attendu | Échoue si les colonnes et les types de données du jeu de résultats ne correspondent pas à ceux spécifiés pour la condition de test. Vous devez spécifier un schéma par le biais des propriétés de la condition de test. Pour plus d’informations, consultez Spécification d’un schéma attendu. |
| Non concluant | Produit toujours un test avec un résultat inconclusif. Il s’agit de la condition par défaut ajoutée à chaque test. Cette condition de test est incluse pour indiquer que la vérification de test n’a pas été implémentée. Supprimez cette condition de test de votre test après avoir ajouté d’autres conditions de test. |
| Jeu de résultats non vide | Échoue si le jeu de résultats est vide. Vous pouvez utiliser cette condition de test ou EmptyResultSet avec la fonction Transact-SQL @@RAISERROR dans votre script de test pour tester si une mise à jour a fonctionné correctement. Par exemple, vous pouvez enregistrer des valeurs de pré-mise à jour, exécuter la mise à jour, comparer les valeurs post-mise à jour et déclencher une erreur si vous n’obtenez pas les résultats attendus. |
| Nombre de lignes | Échoue si le jeu de résultats ne contient pas le nombre attendu de lignes. |
| Valeur scalaire | Échoue si une valeur particulière dans le jeu de résultats n’est pas égale à la valeur spécifiée. La valeur attendue par défaut est Null. |
La condition de test d’exécution spécifie une limite de temps sous laquelle le script de test Transact-SQL doit s’exécuter. Si cette limite de temps est dépassée, le test échoue. Les résultats des tests incluent également une statistique de durée, qui diffère de la condition de test du temps d'exécution. La statistique Durée inclut non seulement l’heure d’exécution, mais également l’heure de connexion à la base de données deux fois ; le temps d’exécuter d’autres scripts de test, tels que le script de pré-test et le script de post-test ; et le temps d’exécution des conditions de test. Par conséquent, un test peut réussir même si sa durée est supérieure à sa durée d’exécution.
La durée signalée n’inclut pas le temps utilisé pour la génération de données et le déploiement de schéma, car ils se produisent avant l’exécution des tests. Pour afficher la durée du test, sélectionnez une exécution de test dans la fenêtre Résultats des tests , cliquez avec le bouton droit et choisissez Afficher les détails des résultats des tests.
Vous pouvez ajouter des conditions de test aux tests unitaires SQL Server à l’aide du volet Conditions de test du Concepteur de tests unitaires SQL Server. Pour plus d’informations, consultez Guide pratique pour ajouter des conditions de test à des tests unitaires SQL Server.
Vous pouvez également modifier votre code de méthode de test directement pour ajouter d’autres fonctionnalités. Pour plus d’informations, consultez Comment : Ouvrir un test unitaire SQL Server pour modification et Comment : Écrire un test unitaire SQL Server qui s'exécute dans la portée d'une seule transaction. Par exemple, vous pouvez ajouter des fonctionnalités à une méthode de test en ajoutant des instructions Assert. Pour plus d’informations, consultez Utiliser des assertions Transact-SQL dans des tests unitaires SQL Server.
Échecs attendus
Vous pouvez créer des tests unitaires SQL Server pour tester le comportement qui ne doit pas réussir. Ces défaillances attendues sont parfois appelées tests négatifs. Voici quelques exemples :
- Vérifiez qu’une procédure stockée qui supprime les données d’un client échoue si vous spécifiez un ID client non valide.
- Vérifiez qu’une procédure stockée qui remplit une commande échoue si la commande n’a jamais été passée ou si la commande a déjà été remplie.
- Vérifiez qu’une procédure stockée qui annule une commande ne peut pas annuler les commandes terminées ou les commandes qui ont déjà été annulées.
Vous pouvez définir des tests unitaires SQL Server pour les procédures stockées qui lèvent des exceptions attendues. Vous pouvez ajouter un attribut à la méthode de test unitaire pour indiquer quelle exception ou exceptions sont attendues. En procédant ainsi, vous empêchez le test d’échouer lorsque l’exception se produit.
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)]
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 THROW dans votre code de base de données. Si vous spécifiez MatchFirstError = false, 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.
Spécifier une somme de contrôle de données
Pour afficher le Concepteur de tests unitaires SQL Server, double-cliquez sur le fichier de code source de test unitaire dans l’Explorateur de solutions.
Après avoir ajouté une condition de test de somme de contrôle des données à votre test unitaire de base de données, vous devez configurer la somme de contrôle attendue à l’aide de la procédure suivante :
Spécifier une somme de contrôle attendue
Dans la liste des conditions de test, sélectionnez la condition de test de somme de contrôle pour laquelle vous souhaitez spécifier une somme de contrôle.
Ouvrez la fenêtre Propriétés en appuyant sur F4. Vous pouvez également ouvrir le menu Affichage et sélectionner Fenêtre Propriétés .
(Facultatif) Vous pouvez modifier la propriété (Name) de la condition de test pour qu’elle soit plus descriptive.
Dans la propriété Configuration , sélectionnez le bouton Parcourir (...).
La boîte de dialogue Configuration pour TestConditionName s’affiche.
Spécifiez une connexion à la base de données que vous souhaitez tester. Pour plus d’informations, consultez Guide pratique pour créer une connexion de base de données.
Par défaut, le corps Transact-SQL de votre test s’affiche dans le volet d’édition. Vous pouvez modifier le code, le cas échéant, pour produire les résultats attendus. Par exemple, si votre test comporte du code dans le pré-test, vous devrez peut-être ajouter ce code.
Important
Si vous modifiez une condition de somme de contrôle pour laquelle vous aviez précédemment spécifié une somme de contrôle, les modifications que vous avez apportées dans le volet d’édition ne sont pas enregistrées. Vous devez à nouveau apporter ces modifications avant de sélectionner Récupérer.
Sélectionnez Récupérer.
La Transact-SQL est exécutée sur la connexion de base de données spécifiée et les résultats s’affichent dans la boîte de dialogue.
Si les résultats correspondent aux résultats attendus de votre test, sélectionnez OK. Sinon, modifiez le corps Transact-SQL et répétez les étapes 6, 7 et 8 jusqu’à ce que les résultats soient comme prévu.
La colonne Valeur de la condition de test affiche la valeur de la somme de contrôle attendue.
Spécifier un schéma attendu
Après avoir ajouté une condition de test de schéma attendue à votre test unitaire SQL Server, vous devez configurer le schéma attendu à l’aide de la procédure suivante :
Spécifier le schéma attendu
Dans la liste des conditions de test, sélectionnez la condition de test de schéma attendue pour laquelle vous souhaitez spécifier un schéma.
Ouvrez la fenêtre Propriétés en appuyant sur F4. Vous pouvez également ouvrir le menu Affichage et sélectionner la fenêtre Propriétés .
(Facultatif) Vous pouvez modifier la propriété (Name) de la condition de test pour qu’elle soit plus descriptive.
Dans la propriété Configuration , sélectionnez le bouton Parcourir (...).
La boîte de dialogue Configuration pour TestConditionName s’affiche.
Spécifiez une connexion à la base de données que vous souhaitez tester. Pour plus d’informations, consultez Guide pratique pour créer une connexion de base de données.
Par défaut, le corps Transact-SQL de votre test s’affiche dans le volet d’édition. Vous pouvez modifier le code, le cas échéant, pour produire les résultats attendus. Par exemple, si votre test comporte du code dans le pré-test, vous devrez peut-être ajouter ce code.
Important
Si vous modifiez une condition de schéma attendue pour laquelle vous aviez précédemment spécifié un schéma, les modifications que vous avez apportées dans le volet d’édition ne sont pas enregistrées. Vous devez à nouveau apporter ces modifications avant de sélectionner Récupérer.
Sélectionnez Récupérer.
La Transact-SQL est exécutée sur la connexion de base de données spécifiée et les résultats s’affichent dans la boîte de dialogue. Étant donné que vous vérifiez le schéma ou la forme du jeu de résultats et non les valeurs des résultats, vous n’avez pas besoin de voir les données dans les résultats retournés, tant que les colonnes apparaissent comme vous l’attendez.
Si les résultats correspondent aux résultats attendus de votre test, sélectionnez OK. Sinon, modifiez le corps Transact-SQL et répétez les étapes 6, 7 et 8 jusqu’à ce que les résultats soient comme prévu.
La colonne Valeur de la condition de test affiche des informations sur le schéma attendu. Par exemple, il peut indiquer « Prévu : 2 tables ».
Conditions de test extensibles
En plus des six conditions de test prédéfinies, vous pouvez écrire de nouvelles conditions de test de votre choix. Ces conditions de test sont affichées dans le volet Conditions de test du Concepteur de tests unitaires SQL Server. Pour plus d’informations, consultez Conditions de test personnalisées pour les tests unitaires SQL Server.