Dépannage des tests unitaires pilotés par les données
Mise à jour : novembre 2007
Vous pouvez rencontrer des problèmes de connexion, d'authentification, de déploiement ou autre, lorsque vous exécutez des tests unitaires pilotés par les données. Pour résoudre ces problèmes, consultez les informations des sections suivantes.
Le test n'arrive pas à se connecter à la source de données
Assurez-vous que la source de données est accessible par le compte d'utilisateur utilisé pour exécuter les tests. Pour ce faire, vous devez connaître le compte d'utilisateur utilisé pour l'exécution des tests. Par exemple, lorsque vous exécutez des tests à distance, ils s'exécutent à partir du compte d'utilisateur de l'agent.
Problèmes ASP.NET
Les tests ASP.NET qui s'exécutent sur un serveur Web IIS sont effectués à partir du compte 'aspnet'. Vous devez donc vous assurer que l'utilisateur ASP.NET ait accès à cette source de données.
En outre, si vous utilisez le 'DSN ODBC Excel', vous devez créer le 'Dsn système'. Le Dsn système est disponible pour tous les utilisateurs. Pour créer des DSN, utilisez l'administrateur de sources de données ODBC. Pour ce faire, cliquez sur Démarrer, ouvrez le Panneau de configuration, ouvrez Outils d'administration, puis Sources de données.
Déploiement des fichiers sources de données
Si vous utilisez un fichier source de données tel qu'une feuille de calcul Microsoft Excel ou un fichier .CSV, assurez-vous qu'il est disponible lors de l'exécution du test. Une méthode possible consiste à ajouter le fichier source de données comme élément de déploiement à l'aide de la boîte de dialogue de configuration de série de tests, ou comme élément de déploiement de test spécifique. En outre, indiquez un chemin d'accès relatif au fichier. Pour plus d'informations sur les configurations de séries de tests, consultez Configuration de l'exécution de tests.
Problèmes d'authentification
Utilisez Authentification Windows chaque fois que cela est possible.
Chaînes de connexion
Bien que la boîte de dialogue Connexion de données permette de se connecter à Microsoft SQL Server et Oracle, cette méthode n'est pas pratique lorsque vous devez établir une connexion aux sources de données de fichier. Pour ces sources, vous pouvez spécifier une chaîne de connexion, puis sélectionner un nom de table de données à partir d'une zone de liste déroulante de la fenêtre Propriétés.
Le tableau suivant présente des exemples de noms de fournisseurs et de chaînes de connexion pour la plupart des fournisseurs de données.
Source de données |
Nom du fournisseur |
Chaîne de connexion |
MS SQL Server (fournisseur .NET) |
System.Data.SqlClient |
Data Source=SqlServerName;InitialCatalog=MyDatabaseName;Integrated Security=True;Connect Timeout=30;User Instance=True |
MS SQL Express Server (fournisseur .NET) |
System.Data.SqlClient |
Data Source=.\SQLEXPRESS;AttachDbFilename=C:\ \Test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True |
MS SQL Server (OLEDB, fournisseur MDAC) |
System.Data.OleDb |
Provider=SQLOLEDB;Data Source= SqlServerName;Integrated Security=SSPI;Initial Catalog=MyDatabaseName |
MS SQL Server (OLEDB, fournisseur client natif) |
System.Data.OleDb |
Provider=SQLNCLI;Data Source= MySqlServerComputerName;Integrated Security=SSPI;Initial Catalog= MyDatabaseName |
MS SQL (ODBC) |
System.Data.Odbc |
Driver={SQL Server};Server=SqlServerName;Database=DatabaseName;Trusted_Connection=yes Driver={SQL Server};Server=SqlServerName;Database=DatabaseName;Uid=UserName;Pwd=<password> |
Oracle (fournisseur .NET) |
System.Data.OracleClient |
Data Source=OracleServerName;Persist Security Info=True;User ID=scott;Password=<password>;Unicode=True |
Oracle (OLEDB, fournisseur Oracle) |
System.Data.OleDb |
Provider=OraOLEDB.Oracle;Data Source=OracleServerName;Persist Security Info=True;OSAuthent=1 Provider=OraOLEDB.Oracle;Data Source=OracleServerName;Persist Security Info=True;User ID=scott;Password=<password> |
Oracle (OLEDB, fournisseur Microsoft) |
System.Data.OleDb |
Provider=MSDAORA;Data Source= OracleServerName;Persist Security Info=True; User ID=scott;Password=<password> |
Oracle (ODBC) |
System.Data.Odbc |
Driver={Microsoft ODBC for Oracle};Server=OracleServerName;Uid=scott;Pwd=<password> |
Excel (OLEDB) |
System.Data.OleDb |
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ Test.xls;Persist Security Info=False;Extended Properties="Excel 8.0" |
Excel (ODBC, Pilote MS Excel) |
System.Data.Odbc |
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\\Test.xls;DefaultDir=C:\ Conseil Pour une utilisation de la feuille Sheet1, utilisez Sheet1 $ comme nom de table de données. |
Excel (ODBC, Dsn) |
System.Data.Odbc |
Dsn=Excel Files;dbq=C:\Test.xls;defaultdir=C:\;driverid = 790;maxbuffersize=2048;pagetimeout=5 Conseil Lorsque vous exécutez les tests sous ASP.NET, envisagez la possibilité d'utiliser le DSN système au lieu du DSN d'utilisateur. |
Fichier CSV/texte (OLEDB) |
System.Data.OleDb |
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties="text;HDR=Yes;FMT=Delimited” Conseil Pour le fichier test.csv, utilisez test#csv comme nom de table. Remarque HDR=Yes signifie que la première ligne contient des noms de colonnes et non des données effectives. |
Fichier CSV/texte (ODBC) |
System.Data.Obdc |
Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\;Extensions=asc,csv,tab,txt |
ODBC via le Dsn |
System.Data.Obdc |
Dsn=MyDsn;Uid=UserName;Pwd=<password> FILEDSN=C:\MyDsn.dsn;Uid=UserName;Pwd=<password> |
Spécification d'une source de données distincte du code compilé
Vous pouvez utiliser le fichier App.config pour spécifier une source de données pour votre test. Vous pouvez ainsi modifier les attributs de source de données, tels que le serveur, le nom de table, etc., sans devoir recompiler l'assembly de test. Lorsque vous exécutez le test à partir de la ligne de commande, assurez-vous que le fichier App.config se trouve dans le même répertoire que l'assembly de test.
Exemple :
[TestMethod][DataSource("MyDataSource")]
[DeploymentItem("MyDataSource.csv")]public void MyTest() {}
Contenu du fichier App.config :
<configSections><section name="microsoft.visualstudio.qualitytools" type="Microsoft.VisualStudio.QualityTools.UnitTesting.Framework.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></configSections><microsoft.visualstudio.qualitytools><dataSources><add name="MyDataSource" connectionString="MyConnectionString" dataTableName="ChildSearchCriteria" dataAccessMethod="Sequential" /></dataSources></microsoft.visualstudio.qualitytools>
Remarque : |
---|
La propriété Run unit tests in application domain détermine si chaque assembly de test unitaire s'exécute dans un domaine d'application distinct. La valeur par défaut de cette propriété est True. Si vos tests unitaires ne requièrent pas un fichier app.config ou un domaine d'application distinct pour fonctionner correctement, vos tests unitaires peuvent s'exécuter plus vite si cette propriété a la valeur False. |
Une fois la base de données initialisée dans TestInitialize, vos modifications n'apparaissent pas
Lorsque des séries de tests pilotées par les données s'exécutent, l'adaptateur de test unitaire se connecte à votre table de données et génère une liste de lignes de données. Il exécute ensuite les méthodes TestInitialize, TestMethod et TestCleanup pour chaque ligne. Si vous modifiez des lignes de données dans TestInitialize, l'adaptateur de test unitaire ne détecte pas cette modification. Par conséquent, si vous souhaitez modifier votre table de données pour un test piloté par les données, faites-le dans la méthode ClassInitialize ou AssemblyInitialize.
Le test unitaire réussit, mais ne contient aucun résultat
Ce résultat signifie que votre table de données ne contient aucune ligne.
Autres problèmes
Si votre problème n'est pas mentionné ici, vous pouvez essayer de trouver des réponses ou de poser des questions sur les forums d'assistance et les forums individuels consacrés à Visual Studio Team Edition for Developers et Visual Studio Team System Test Edition.
Voir aussi
Tâches
Comment : configurer un test unitaire piloté par des données