Procédure pas à pas : utilisation d'un fichier de configuration pour définir une source de données
Mise à jour : novembre 2007
Cette procédure pas à pas illustre comment utiliser une source de données définie dans un fichier app.config pour des tests unitaires. Vous apprendrez à créer un fichier app.config qui définit une source de données pouvant être utilisée par la classe DataSourceAttribute. Cette procédure pas à pas illustre les tâches suivantes :
création d'un fichier app.config ;
définition d'une section de configuration personnalisée ;
définition de chaînes de connexion ;
définition des sources de données ;
accès aux sources de données à l'aide de la classe DataSourceAttribute.
Composants requis
Pour exécuter cette procédure pas à pas, vous devez disposer de la configuration suivante :
Visual Studio Team System Test Edition
Microsoft Access ou Microsoft Excel afin de fournir des données pour au moins l'une des méthodes de test.
Une solution Visual Studio 2005 qui contient un projet de test.
Création du fichier App.config
Pour ajouter un fichier app.config au projet
Si votre projet de test a déjà un fichier app.config, reportez-vous à Définition d'une section de configuration personnalisée.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur votre projet de test, pointez sur Ajouter, puis cliquez sur Nouvel élément.
La fenêtre Ajouter un nouvel élément s'ouvre.
Sélectionnez le modèle Fichier de configuration de l'application, puis cliquez sur Ajouter.
Définition d'une section de configuration personnalisée
Examinez le fichier app.config. Il contient au moins la déclaration XML et un élément racine.
Pour ajouter la section de configuration personnalisée au fichier app.config
L'élément racine d'app.config doit être l'élément configuration. Créez un élément configSections dans l'élément configuration. configSections doit être le premier élément du fichier app.config.
Dans l'élément configSections, créez un élément section.
Dans l'élément section, ajoutez un attribut nommé name et assignez-lui une valeur égale à microsoft.visualstudio.testtools. Ajoutez un autre attribut nommé type et assignez-lui une valeur égale à Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
L'élément section doit ressembler à ceci :
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
Définition des chaînes de connexion
Les chaînes de connexion définissent des informations spécifiques au fournisseur pour accéder aux sources de données. Les chaînes de connexion définies dans les fichiers de configuration fournissent des informations sur le fournisseur de données réutilisables dans une application. Dans cette section, vous créez deux chaînes de connexion qui seront utilisées par des sources de données définies dans la section de configuration personnalisée.
Pour définir des chaînes de connexion
Après l'élément configSections, créez un élément connectionStrings.
Dans l'élément connectionStrings, créez deux éléments add.
Dans le premier élément add, créez les attributs et valeurs suivants pour une connexion à une base de données Microsoft Access :
Attribut |
Valeurs |
---|---|
name |
"MyJetConn" |
connectionString |
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" |
providerName |
"System.Data.OleDb" |
Dans le deuxième élément add, créez les attributs et valeurs suivants pour une connexion à une feuille de calcul Microsoft Excel :
name |
"MyExcelConn" |
connectionString |
"Dsn=Excel Files;dbq=data.xls;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" |
providerName |
"System.Data.Odbc" |
L'élément connectionStrings doit ressembler à ceci :
<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xls;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>
Définition des sources de données
La section de sources de données contient quatre attributs utilisés par le moteur de test pour récupérer des données à partir d'une source de données.
name définit l'identité utilisée par DataSourceAttribute pour spécifier la source de données à utiliser.
connectionString identifie la chaîne de connexion créée dans la section Définition des chaînes de connexion ci-dessus.
dataTableName définit la table ou la feuille qui contient les données à utiliser dans le test.
dataAccessMethod définit la technique d'accès aux valeurs de données dans la source de données.
Dans cette section, vous définirez deux sources de données à utiliser dans un test unitaire.
Pour définir des sources de données
Après l'élément connectionStrings, créez un élément microsoft.visualstudio.testtools. Cette section a été créée dans Définition d'une section de configuration personnalisée.
Dans l'élément microsoft.visualstudio.testtools, créez un élément dataSources.
Dans l'élément dataSources, créez deux éléments add.
Dans le premier élément add, créez les attributs et valeurs suivants pour une source de données Microsoft Access :
Attribut |
Valeurs |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
Dans le deuxième élément add, créez les attributs et valeurs suivants pour une source de données Microsoft Excel :
Name |
"MyExcelDataSource" |
connectionString |
"MyExcelConn" |
dataTableName |
"Sheet1$" |
dataAccessMethod |
"Sequential" |
L'élément microsoft.visualstudio.testtools doit ressembler à ceci :
<microsoft.visualstudio.testtools>
<dataSources>
<add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
<add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
</dataSources>
</microsoft.visualstudio.testtools>
Le fichier app.config final doit ressembler à ceci :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</configSections>
<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xls;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>
<microsoft.visualstudio.testtools>
<dataSources>
<add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
<add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
</dataSources>
</microsoft.visualstudio.testtools>
</configuration>
Création d'un test unitaire à l'aide de sources de données définies dans app.config
Maintenant qu'un fichier app.config a été défini, vous allez créer un test unitaire qui utilise des données situées dans les sources de données définies dans le fichier app.config. Dans cette section, nous allons :
créer les sources de données du fichier app.config ;
utiliser les sources de données dans deux méthodes de test qui comparent les valeurs dans chaque source de données.
Pour créer une source de données Microsoft Access
Créez une base de données Microsoft Access nommée testdatasource.mdb.
Créez une table et nommez-la MyDataTable dans testdatasource.mdb.
Créez deux champs dans MyDataTable nommés Arg1 et Arg2 à l'aide du type de données Number.
Ajoutez cinq entités à MyDataTable avec les valeurs suivantes pour Arg1 et Arg2, respectivement : (10,50), (3,2), (6,0), (0,8) et (12312,1000).
Enregistrez et fermez la base de données.
Modifiez la chaîne de connexion de sorte qu'elle pointe vers l'emplacement de la base de données. Modifiez la valeur de Data Source pour refléter l'emplacement de la base de données.
Pour créer une source de données Microsoft Excel
Créez une feuille de calcul Microsoft Excel nommée data.xls.
Créez une feuille nommée Sheet1 si elle n'existe pas déjà dans data.xls.
Créez deux en-têtes de colonnes et nommez-les Val1 et Val2 dans Sheet1.
Ajoutez cinq entités à Sheet1 avec les valeurs suivantes pour Val1 et Val2, respectivement : (1,1), (2,2), (3,3), (4,4) et (5,0).
Enregistrez et fermez la feuille de calcul.
Modifiez la chaîne de connexion de sorte qu'elle pointe vers l'emplacement de la feuille de calcul. Modifiez la valeur de dbq pour refléter l'emplacement de la feuille de calcul.
Pour créer un test unitaire à l'aide des sources de données app.config
Ajoutez un test unitaire au projet de test.
Pour plus d'informations, consultez Comment : créer un test unitaire.
Remplacez le contenu généré automatiquement du test unitaire par le code suivant :
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestProject1 { [TestClass] public class UnitTest1 { private TestContext context; public TestContext TestContext { get { return context; } set { context = value; } } [TestMethod()] [DeploymentItem("MyTestProject\\testdatasource.mdb")] [DataSource("MyJetDataSource")] public void MyTestMethod() { int a = Int32.Parse(context.DataRow["Arg1"].ToString()); int b = Int32.Parse(context.DataRow["Arg2"].ToString()); Assert.AreNotEqual(a, b, "A value was equal."); } [TestMethod()] [DeploymentItem("MyTestProject\\data.xls")] [DataSource("MyExcelDataSource")] public void MyTestMethod2() { Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]); } } }
Examinez les attributs DataSource. Remarquez les noms des paramètres du fichier app.config.
Générez votre solution et exécutez les tests MyTestMethod et MyTestMethod2.
Remarque importante : |
---|
Déployez des éléments tels que des sources de données de sorte qu'ils soient accessibles au test dans le répertoire de déploiement. Pour plus d'informations, consultez Déploiement de test. |
Voir aussi
Tâches
Comment : créer un projet de test
Comment : créer un test unitaire
Comment : configurer un test unitaire piloté par des données
Concepts
Codage d'un test unitaire piloté par des données
Dépannage des tests unitaires pilotés par les données
Autres ressources
Utilisation des tests unitaires