【问题标题】:Concatenating strings in DataSource for data-driven unit test连接数据源中的字符串以进行数据驱动的单元测试
【发布时间】: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


    【解决方案1】:

    问题可能是在添加带有@的字符串,你可以试试:

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

    【讨论】:

    • 不,错误消息保持不变(删除“@”并转义“\”)
    猜你喜欢
    • 2019-12-12
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多