数据驱动单元测试问题

时间:2011-09-25 21:30:24

标签: c# visual-studio-2010 unit-testing data-driven-tests

我遇到了一些麻烦,我的单元测试设置为使用Excel .xlsx数据源。

我的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>

    

我已经确认找到了TestData.xlsx,并且有一张名为GetAllCellNamesTest的工作表。

在我的单元测试课程中,我有以下设置:

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

TestData.xlsx正被复制到测试结果目录中,并且所有不尝试引用数据源的单元测试都在传递。

但是,这一项测试失败,并显示以下消息:

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.

我真的不确定我的设置在哪里出错了,我在MSDN上按照此演练进行设置:Walkthrough: Using a Configuration File to Define a Data Source。请注意,我确实将section版本更改为10.0.0.0,因为我使用的是.net 4.0(根据页面底部的说明)。

编辑:哦,所有文件都位于我的计算机本地。

3 个答案:

答案 0 :(得分:3)

您是否尝试过使用完整的文件路径?

文件是否只读?

答案 1 :(得分:2)

您还可以指定要作为TestSettings的一部分部署的文件/目录。这将节省您必须为每个测试方法放置DeploymentItem属性的工作。

答案 2 :(得分:1)

您之后使用配置;

<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>