2012-05-22 3 views
0

У меня возникла странная проблема с модульным тестом, управляемым данными. Данные хранятся в файле xls. Когда я использую следующую строку подключения, все работает нормально.Конкатенация строк в DataSource для тестового модульного теста

[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=.", 
     ... 

Вместо этого я получаю следующее сообщение об ошибке

Блок тест адаптера не удалось подключиться к источнику данных или для считывания данных , Дополнительные сведения об устранении этой ошибки см. В разделе «Устранение неполадок с тестируемыми данными» (http://go.microsoft.com/fwlink/?LinkId=62412) в библиотеке MSDN.

Сведения об ошибке: ERROR [42S02] [Microsoft] [Драйвер Excel ODBC] Механизм базы данных Microsoft Jet не смог найти объект «Tabelle1 $». Убедитесь, что объект существует, и вы правильно назовете его имя и имя пути.

Любая идея, откуда эта разница в поведении?

Что меня больше всего сбивает с толку, так это то, что даже в ildasm я не видел никаких очевидных различий между этими двумя вариантами (т. Е., Похоже, компилятор уже объединяет две строки).

ответ

0

Проблема, вероятно, в оных строк с @, вы можете попробовать:

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

Нет, сообщение об ошибке остается неизменным (удаление как «@» и уйти от «\») – hofingerandi