Codage d'un test unitaire piloté par des données

Mise à jour : novembre 2007

Un test unitaire fonctionne comme test piloté par des données s'il a les attributs requis par un test unitaire piloté par des données. Vous pouvez assigner ces attributs et leurs valeurs par le biais de la fenêtre Propriétés ou en ajoutant directement les attributs au code du test.

Pour plus d'informations sur la configuration d'un test unitaire comme test piloté par des données en modifiant ses propriétés, consultez Comment : configurer un test unitaire piloté par des données.

Cette rubrique décrit comment coder un test unitaire comme test unitaire piloté par des données à l'aide de l'attribut DataSource et de la classe TestContext.

Utilisation de données d'une source de données

Lorsqu'un test unitaire piloté par des données s'exécute, les données sont récupérées à partir des lignes d'une source de données. Elles sont ensuite disponibles au test unitaire actuel par le biais des propriétés DataRow et DataConnection de la classe TestContext.

Dans l'exemple suivant, DataRow() est du type DataRow et LastName est le nom d'une colonne valide dans la ligne associée à l'itération actuelle du test piloté par des données.

TestContext.DataRow["LastName"]

Bien que LastName fasse référence à une colonne par nom, vous pouvez également faire référence aux colonnes par numéro de colonne.

Pour chaque ligne de la table, il est possible d'accéder à un nombre quelconque de colonnes. Vous pouvez par exemple récupérer plusieurs colonnes de données à la fois, les utiliser dans un calcul, puis comparer le résultat avec une dernière colonne qui contient une valeur de retour attendue.

Codage d'un test unitaire piloté par des données

Pour créer un test unitaire piloté par des données, vous pouvez démarrer avec un test unitaire que vous avez créé manuellement ou avec un test unitaire généré. Pour plus d'informations, consultez Comment : créer un test unitaire et Comment : générer un test unitaire.

Pour configurer votre test unitaire existant, ajoutez des attributs qui définissent la source de données à utiliser, la manière dont vous souhaitez accéder à ces données et la table dont vous souhaitez que votre test utilise les lignes comme entrée. Pour plus d'informations sur la configuration de ces attributs, consultez Comment : configurer un test unitaire piloté par des données.

Par exemple, le code suivant est tiré d'un test unitaire piloté par des données qui utilise des données de la base de données Northwind.

namespace TestProject1
{
    [TestClass]
    public class TestClass
    {
        private TestContext m_testContext;
        public TestContext TestContext
        {
            get { return m_testContext; }
            set { m_testContext = value; }
        }
        [TestMethod]
        [DeploymentItem("FPNWIND.MDB")]
        [DataSource("System.Data.OleDb", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"FPNWIND.MDB\"", "Employees", DataAccessMethod.Sequential)]
        public void TestMethod()
        {
            Console.WriteLine( "EmployeeID: {0}, LastName: {1}", TestContext.DataRow["EmployeeID"],  TestContext.DataRow["LastName"] );
        }
    }
}

Le code dans la méthode de test de cet exemple utilise des valeurs des colonnes LastName et EmployeeID dans la table "Employees" de la source de données. La méthode de test accède à ces valeurs par le biais d'une propriété TestContext définie dans la classe de test qui contient la méthode.

Voir aussi

Tâches

Comment : créer un test unitaire

Comment : configurer un test unitaire piloté par des données

Concepts

Structure de tests unitaires

Référence

DataSourceAttribute

TryUrlRedirection

Autres ressources

Comment : générer un test unitaire

Tests unitaires pilotés par des données