在Excel数据驱动单元测试

时间:2015-04-22 23:06:56

标签: c# excel unit-testing odbc

我使用System.Data.Odbc连接字符串连接到Excel数据源。使用相对 dbq 路径时会发生以下错误:

  

错误[42S02] [Microsoft] [ODBC Excel驱动程序] Microsoft Office Access数据库引擎找不到对象' Sheet1 $'。确保对象存在,并且您正确拼写其名称和路径名称。

App.config中:

<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="excelConnection" connectionString="Dsn=Excel Files;Dbq=ExcelDataSource.xlsx;Defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc"/>
    </connectionStrings>
    <microsoft.visualstudio.testtools>
        <dataSources>
            <add name="excelDataSource" connectionString="excelConnection" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
        </dataSources>
    </microsoft.visualstudio.testtools>
</configuration>

测试方法属性:

[DeploymentItem("ExcelDataSource.xlsx")]
[DataSource("excelDataSource")]
[TestMethod]

故障排除说明:

  • 使用绝对 dbq 路径
  • Excel文件设置为&#39;如果更新则复制&#39;并指定[DeploymentItem]
  • 在到达[TestInitialize]方法之前失败;在创建测试部署目录之前。
  • 它过去有效,可能是在较旧的Visual Studio版本中

问题:defaultDir =。;决心?

1 个答案:

答案 0 :(得分:2)

使用| DataDirectory |正确解析变量:defaultDir = | DataDirectory |。

connectionString="Dsn=Excel Files;Dbq=ExcelDataSource.xlsx;Defaultdir=|datadirectory|\;driverid=790;maxbuffersize=2048;pagetimeout=5"

More on the |DataDirectory| variable here

相关问题