【发布时间】:2012-05-22 09:32:29
【问题描述】:
我在数据驱动的单元测试中遇到了一个奇怪的问题。数据存储在xls 文件中。当我使用以下连接字符串时,一切正常。
[TestMethod()]
[DataSource(
"System.Data.Odbc",
@"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;dbq=MyFolder\TestData.xls;defaultdir=.",
"Tabelle1$",
DataAccessMethod.Sequential)]
public void DataDrivenTest() {...}
我现在想做的是将连接字符串中的文件名提取到某个常量中,例如
const string FilePath = "MyFolder\TestData.xls";
但是,一旦我开始拆分连接字符串,我就会在单元测试中遇到错误。有趣的是,即使将字符串分成两部分也不起作用:
...
@"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;" + @"dbq=MyFolder\TestData.xls;defaultdir=.",
...
相反,我收到以下错误消息
单元测试适配器连接数据源或读取数据失败。有关解决此错误的详细信息,请参阅 MSDN 库中的“数据驱动单元测试故障排除”(http://go.microsoft.com/fwlink/?LinkId=62412)。
错误详细信息:错误 [42S02] [Microsoft][ODBC Excel 驱动程序] Microsoft Jet 数据库引擎找不到对象“Tabelle1$”。确保对象存在并且正确拼写其名称和路径名。
知道这种行为差异的来源吗?
让我最困惑的是,即使在 ildasm 中,我也看不出这两个变体之间有任何明显的区别(即,似乎编译器已经连接了两个字符串)。
【问题讨论】:
标签: c# datasource mstest data-driven-tests