简体   繁体   English

在Excel数据驱动的单元测试中使用数据源相对路径时出错

[英]Error using Data Source relative path in Excel Data Driven Unit Test

I am using a System.Data.Odbc connection string to connect to an Excel data source. 我正在使用System.Data.Odbc连接字符串连接到Excel数据源。 The following error occurs when using a relative dbq path: 使用相对dbq路径时,会发生以下错误:

ERROR [42S02] [Microsoft][ODBC Excel Driver] The Microsoft Office Access database engine could not find the object 'Sheet1$'. 错误[42S02] [Microsoft] [ODBC Excel驱动程序] Microsoft Office Access数据库引擎找不到对象“ Sheet1 $”。 Make sure the object exists and that you spell its name and the path name correctly. 确保对象存在,并且正确拼写了它的名称和路径名。

App.config: 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>

Test Method Attributes: 测试方法属性:

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

Troubleshooting notes: 故障排除说明:

  • Works with an absolute dbq path 使用绝对dbq路径
  • Excel file is set to 'Copy if Newer' and [DeploymentItem] is specified Excel文件设置为“如果更新则复制”并指定了[DeploymentItem]
  • Fails before reaching the [TestInitialize] method; 在到达[TestInitialize]方法之前失败; before the Test Deployment Dir is created. 在创建测试部署目录之前。
  • It worked in the past, perhaps in an older Visual Studio version 它曾经在过去,也许是在较旧的Visual Studio版本中起作用

Question: Where does defaultDir=.; 问题:defaultDir =。 resolve to? 决心解决?

It resolved correctly using |DataDirectory| 使用| DataDirectory |可以正确解析 variable: defaultDir=|DataDirectory|. 变量:defaultDir = | DataDirectory |。

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

More on the |DataDirectory| | DataDirectory |中的更多内容 variable here 这里可变

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM