[英]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.