簡體   English   中英

在數據源中串聯字符串以進行數據驅動的單元測試

[英]Concatenating strings in DataSource for data-driven unit test

我在數據驅動的單元測試中遇到了一個奇怪的問題。 數據存儲在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我也看不到兩個變體之間的任何明顯區別(即,似乎編譯器已經將兩個字符串連接在一起了)。

問題可能出在帶有@的添加字符串中,您可以嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM