Partager via


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

Concepts

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