Scripts dans les tests unitaires de base de données
Mise à jour : novembre 2007
Chaque test unitaire de base de données contient une seule action de prétest, une seule action de test et une seule action de post-test. Chacune de ces actions contient elle-même les éléments suivants :
un script T-SQL qui s'exécute sur une base de données ;
aucune ou plusieurs conditions de test qui évaluent les résultats retournés par l'exécution du script.
Le script de test T-SQL dans l'action de test est le seul composant que vous devez inclure dans chaque test unitaire de base de données. Outre le script de test lui-même, vous voulez probablement aussi spécifier des conditions de test afin de vérifier si le script de test a retourné la valeur ou l'ensemble de valeurs que vous attendiez. L'action de test teste ou modifie un objet particulier de cette base de données, puis évalue cette modification.
Pour chaque action de test, vous pouvez inclure une action de prétest et une action de post-test. Semblable à l'action de test, chaque action de prétest et de post-test contient un script T-SQL et aucune ou plusieurs conditions de test. Vous pouvez utiliser une action de prétest pour vous assurer que la base de données est dans un état qui permet à votre action de test de s'exécuter et de retourner des résultats significatifs. Par exemple, vous pouvez utiliser une action de prétest pour vérifier qu'une table contient des données avant que le script de test exécute une opération sur ces données. Une fois que l'action de prétest a préparé la base de données et que l'action de test a retourné des résultats significatifs, l'action de post-test restaure la base de données dans l'état dans lequel elle était avant l'exécution de l'action de prétest. Dans certains cas, vous pouvez utiliser l'action de post-test pour valider les résultats de l'action de test. Cela s'explique par le fait que l'action de post-test peut avoir des privilèges de base de données supérieurs à l'action de test. Pour plus d'informations, consultez Vue d'ensemble des chaînes de connexion et des autorisations.
En plus de ces trois actions, il existe également deux scripts de test (appelés « scripts courants ») qui s'exécutent avant et après l'exécution d'un test unitaire de base de données. Par conséquent, jusqu'à cinq scripts T-SQL peuvent être exécutés pendant l'exécution d'un seul test unitaire de base de données. Seul le script T-SQL qui est contenu dans l'action de test est obligatoire ; les scripts courants et les scripts d'action de prétest et de post-test sont facultatifs.
Le tableau suivant fournit la liste complète des scripts qui sont associés à tous les tests unitaires de base de données.
Action |
Type de script |
Description |
---|---|---|
TestInitialize |
Script courant (initialisation) |
(Facultatif) Ce script précède toutes les actions de prétest et de test dans le test unitaire. Le script TestInitialize s'exécute avant chaque test unitaire dans une classe de test donnée. Ce script s'exécute en utilisant le contexte privilégié. |
Prétest |
Script de test |
(Facultatif) Ce script fait partie du test unitaire. Le script de prétest s'exécute avant l'action de test dans un test unitaire. Ce script s'exécute en utilisant le contexte privilégié. |
Test |
Script de test |
(Obligatoire) Ce script fait partie du test unitaire. Le script de test s'exécute sur la base de données. Ce script peut, par exemple, exécuter une procédure stockée qui obtient, insère ou met à jour des valeurs de table. Il s'exécute en utilisant le contexte d'exécution. |
Post-test |
Script de test |
(Facultatif) Ce script fait partie du test unitaire. Le script de post-test s'exécute après un test unitaire individuel. Ce script s'exécute en utilisant le contexte privilégié. |
TestCleanup |
Script courant (nettoyage) |
(Facultatif) Ce script suit le test unitaire. Le script TestCleanup s'exécute après tous les tests unitaires dans une classe de test donnée. Ce script s'exécute en utilisant le contexte privilégié. |
Pour plus d'informations sur les différents contextes de sécurité dans lesquels chacun de ces scripts s'exécute, consultez Vue d'ensemble des chaînes de connexion et des autorisations et la section « Autorisations pour exécuter un test unitaire sur une base de données » dans Autorisations requises dans Database Edition.
Ordre dans lequel les scripts sont exécutés
Il est important de comprendre l'ordre dans lequel chaque script s'exécute. Bien que vous ne puissiez pas modifier cet ordre, vous pouvez choisir les scripts que vous voulez exécuter. L'illustration suivante inclut la sélection des scripts que vous pouvez utiliser dans une série de tests qui contient deux tests unitaires de base de données et affiche l'ordre dans lequel ils s'exécutent :
Remarque : |
---|
Les modifications apportées à la génération de données et au déploiement de la base de données sont appliquées au démarrage de la série de tests, avant l'exécution de tout script. Ces modifications sont appliquées à l'aide de la chaîne de connexion de contexte privilégié. Pour plus d'informations, consultez Comment : configurer l'exécution de tests unitaires de base de données. |
Scripts d'Initialisation et de nettoyage
Dans le Concepteur de test unitaire de base de données, les scripts TestInitialize et TestCleanup sont appelés « scripts courants ». L'exemple précédent suppose que les deux tests unitaires sont compris dans la même classe de test. Par conséquent, ils partagent les mêmes scripts TestInitialize et TestCleanup. C'est toujours le cas pour tous les tests unitaires d'une même classe de test. Toutefois, si votre série de tests contient des tests unitaires de classes de test différentes, les scripts courants de la classe de test associée seront exécutés avant et après l'exécution du test unitaire.
Si vous écrivez des tests unitaires en utilisant uniquement le Concepteur de test unitaire de base de données, vous n'êtes peut-être pas familiarisé avec le concept d'une classe de test. Chaque fois que vous créez un test unitaire en ouvrant le menu Test et en cliquant sur Nouveau test, Database Edition génère une classe de test. Les classes de test apparaissent dans l'Explorateur de solutions avec le nom de test que vous avez spécifié, suivi d'une extension .cs ou .vb. Dans chaque classe de test, les tests unitaires individuels sont stockés sous forme de méthodes de test. Toutefois, quel que soit le nombre de méthodes de test (c'est-à-dire de tests unitaires), chaque classe de test peut avoir aucun ou un script TestInitialize et aucun ou un script TestCleanup.
Vous pouvez utiliser le script TestInitialize pour préparer la base de données de test, et le script TestCleanup pour rétablir la base de données de test dans un état connu. Par exemple, vous pouvez utiliser TestInitialize pour créer une procédure stockée d'assistance que vous exécuterez ultérieurement, dans le script de test, pour tester une autre procédure stockée.
Scripts de prétest et de post-test
Les scripts qui sont associés à des actions de prétest et de post-test peuvent varier d'un test unitaire à l'autre. Vous pouvez utiliser ces scripts pour établir des modifications incrémentielles sur la base de données, puis nettoyer ces modifications.
Voir aussi
Concepts
Utilisation de conditions de test dans des tests unitaires de base de données