连接DataSource中的字符串以进行数据驱动的单元测试

时间:2012-05-22 09:32:29

标签: c# datasource mstest data-driven-tests

我遇到了数据驱动单元测试的奇怪问题。数据存储在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中,我也看不出两个变体之间有任何明显的差异(即,看似编译器已经连接了两个字符串)。

1 个答案:

答案 0 :(得分:0)

问题可能在于使用@添加字符串,您可以尝试:

"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;" + "dbq=MyFolder\\TestData.xls;defaultdir=."