2011-09-25 2 views
3

Je rencontre des problèmes pour configurer mes tests unitaires afin d'utiliser une source de données Excel .xlsx.Problème de tests unitaires pilotés par les données

Mon fichier App.config:

<?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=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </configSections> 
    <connectionStrings> 
    <add name="TestData" connectionString="Dsn=Excel Files;dbq=TestData.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" /> 
    </connectionStrings> 
    <microsoft.visualstudio.testtools> 
    <dataSources> 
     <add name="GetAllCellNamesTest" connectionString="TestData" dataTableName="GetAllCellNamesTest$" dataAccessMethod="Sequential"/> 
</dataSources> 

J'ai vérifié qu'il est de trouver TestData.xlsx, et il y a une feuille nommée GetAllCellNamesTest.

Dans ma classe de test unitaire, j'ai la configuration suivante:

 [TestMethod()] 
     [DeploymentItem("TestProject\\TestData.xlsx")] 
     [DataSource("GetAllCellNamesTest")] 
     public void GetAllCellNamesTest() 
     { 
      // ... test code 

TestData.xlsx est copié dans le répertoire des résultats des tests et tous les tests unitaires qui ne tentent pas de faire référence à la source de données sont de passage.

Cependant, celui-ci test échoue avec le message suivant:

The unit test adapter failed to connect to the data source or to read the data. For more information on troubleshooting this error, see "Troubleshooting Data-Driven Unit Tests" (http://go.microsoft.com/fwlink/?LinkId=62412) in the MSDN Library. 
Error details: ERROR [42S02] [Microsoft][ODBC Excel Driver] The Microsoft Access database engine could not find the object 'GetAllCellNamesTest$'. Make sure the object exists and that you spell its name and the path name correctly. If 'GetAllCellNamesTest$' is not a local object, check your network connection or contact the server administrator. 

Je ne suis vraiment pas sûr où dans ma configuration est mal, je suivais cette procédure pas à pas sur MSDN pour obtenir la configuration: Walkthrough: Using a Configuration File to Define a Data Source. Notez que j'ai changé la version section en 10.0.0.0 parce que j'utilise .net 4.0 (par la note au bas de la page).

éditer: oh, et tous les fichiers sont situés localement sur mon ordinateur.

+0

C'est l'une des raisons pour lesquelles je préfère NUnit et xUnit sur MSTest. Travailler tout en code, avec [TestCase] ​​ou [Theory] est beaucoup plus pratique. – Mathias

Répondre

3

Avez-vous essayé d'utiliser un chemin de fichier complet?

Le fichier est-il en lecture seule?

+0

Ah, merci. En utilisant le chemin complet a travaillé. Cependant, j'aimerais vraiment utiliser un chemin relatif puisque le projet est dans un repo de subversion. Savez-vous quel est le répertoire par défaut à rechercher? – helloworld922

+0

Ma conjecture serait le test est en cours d'épuisement du répertoire bin. En supposant que \ bin \ debug, essayez peut-être un attribut de '.. \ .. TestData.xlsx' –

+0

Ecrivez ceci dans une console ou rapidement dans un fichier. 'DirectoryInfo ApplicationRoot = new DirectoryInfo (Environment.CurrentDirectory); 'Dans mon projet de test j'utilise DirectoryInfo ApplicationRoot = new DirectoryInfo (Environment.CurrentDirectory) .Parent.Parent;' pour trouver la racine du projet. –

2

Vous pouvez également spécifier les fichiers/répertoire que vous souhaitez déployer dans le cadre de vos tests de test. Cela vous évitera d'avoir à mettre l'attribut DeploymentItem pour chaque méthode de test.

1

vous utilisez la configuration après;

<configSections> 
    <section name="microsoft.visualstudio.testtools" 
      type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, 
      Microsoft.VisualStudio.QualityTools.UnitTestFramework, 
      Version=10.0.0.0, Culture=neutral, 
      PublicKeyToken=b03f5f7f11d50a3a"/> 
</configSections> 
Questions connexes