我遇到了数据驱动单元测试的奇怪问题。数据存储在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 Library中的“数据驱动单元测试疑难解答”(http://go.microsoft.com/fwlink/?LinkId=62412)。
错误详细信息:错误[42S02] [Microsoft] [ODBC Excel驱动程序] Microsoft Jet数据库引擎找不到对象“Tabelle1 $”。确保对象存在,并且您正确拼写其名称和路径名称。
知道这种行为上的差异可以来自何处?
对我来说最令人困惑的是,即使在ildasm
中,我也看不出两个变体之间有任何明显的差异(即,看似编译器已经连接了两个字符串)。
答案 0 :(得分:0)
问题可能在于使用@添加字符串,您可以尝试:
"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;" + "dbq=MyFolder\\TestData.xls;defaultdir=."