Ошибка модульного тестирования - Адаптер модульного тестирования не смог подключиться к источнику данных или прочитать данные - PullRequest
7 голосов
/ 06 мая 2010

Я использую VSTS 2K8 и настроил проект модульного тестирования. В нем у меня есть тестовый класс с методом, который делает простое утверждение. Я использую электронную таблицу Excel 2007 в качестве источника данных.

Мой метод испытаний выглядит следующим образом:

        [DataSource("System.Data.Odbc", 
        "Dsn=Excel Files;dbq=|DataDirectory|\\MyTestData.xlsx;defaultdir=C:\\TestData;driverid=1046;maxbuffersize=2048;pagetimeout=5", 
        "Sheet1", 
        DataAccessMethod.Sequential)]
    [DeploymentItem("MyTestData.xlsx")]
    [TestMethod()]
    public void State_Value_Is_Set()
    {
        string expected = "MD";
        string actual = TestContext.DataRow["State"] as string;
        Assert.AreEqual(expected, actual);
    }

Как указано в атрибутах оформления метода, моя таблица Excel находится на моем локальном диске C: /. В нем лист, где находятся все мои данные, называется «Лист1».

Я скопировал электронную таблицу Excel в свой проект и установил для нее действие Build Action = "Content", а для параметра "Копировать - выходной каталог" = "Копировать, если новее".

При попытке запустить этот простой модульный тест я получаю следующую ошибку:

Адаптер модульного тестирования не смог подключиться к источнику данных или прочитать данные. Дополнительные сведения об устранении неполадок, связанных с этой ошибкой, см. В разделе «Устранение неполадок в модульных тестах, управляемых данными» (http://go.microsoft.com/fwlink/?LinkId=62412) в библиотеке MSDN. Сведения об ошибке: ОШИБКА [42S02] [Microsoft] [Драйвер ODBC Excel] Механизму базы данных Microsoft Office Access не удалось найти объект «Лист1». Убедитесь, что объект существует, и что вы правильно написали его имя и путь.

Я проверил, что имя листа написано правильно (то есть Sheet1), и я убедился, что мои источники данных установлены правильно.

Поиски в Интернете почти не включались. И я полностью в тупике.

Вся помощь или вклад приветствуется !!!!

Ответы [ 6 ]

12 голосов
/ 18 июня 2010

Измените свойство «Построить действие» в Excel (.xlsx) на «Содержимое» и «Копировать в выходной каталог» на «Копировать, если новее».

Это сработало для меня, когда я получил ту же ошибку, что и Урс ...

++ Также не забудьте просмотреть и добавить файл Excel на вкладке Развертывание файла TestRun.config, который находится в разделе сервера ..:)

3 голосов
/ 12 августа 2012

Вы должны убедиться, что ваше развертывание включено в выбранных вами тестовых настройках !!!

Удачи !!!

2 голосов
/ 16 февраля 2012

У меня была похожая проблема, но я просто пытался развернуть простой файл XML.

Проблема оказалась в том, что имя файла, который я развертывал, было слишком длинным.

1 голос
/ 01 августа 2012

У меня было две проблемы, одна из них - неправильное написание нужного листа в файле Excel. Другой, и я думаю, что важным было различие между файлами .xls и .xlsx. На моей машине установлен Office 2007 , поэтому автоматически расширение файлов Excel составляет .xlsx, но я должен был написать контрольный пример для проекта, который уже был реализован и который использовал этот источник данных:

[DataSource("System.Data.Odbc",
            @"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=Test.xls;DefaultDir=.",
            "Data$", DataAccessMethod.Sequential)]

Я создал файл excel на машине с версией Office до 2007 года , поэтому расширение было .xls, а затем я переместил этот файл excel на свою машину. Таким образом, я мог бы решить мою проблему.

0 голосов
/ 23 марта 2017

К имени листа должен быть добавлен символ '$', иначе он определенно потерпит неудачу (все еще действует для Visual Studio 2015), например: "Sheet1$".

0 голосов
/ 29 января 2013

Решения, которые я пробовал 1) Добавлен файл данных в разделе развертывания локальных настроек 2) Изменены свойства файла на «Содержимое» и «Копировать, если новее» 3) Жесткое кодирование местоположения файла в атрибуте элемента развертывания и в строке подключения в файле app.config.

Ничего из вышеперечисленного не сработало.

В конце концов я обнаружил, что в реестре не было регистров Jet dll. Я экспортировал папку Jet (HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Jet) из реестра машины, на которой я не получал ошибку, и импортировал ее на компьютер, где я получал ошибку. Это решило проблему для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...