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

Я использую 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:/. В нем лист, где находятся все мои данные, называется "Sheet1".

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

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

модульный тест адаптера не удалось подключиться к источнику данных или для чтения данных. Дополнительные сведения об устранении этой ошибки см. В разделе "Устранение неполадок модульных тестов, управляемых данными" (http://go.microsoft.com/fwlink/?LinkId=62412) в библиотеке MSDN. Сведения об ошибке: ошибка [42S02][Microsoft] [драйвер ODBC Excel] Microsoft Office Access Database engine не удалось найти объект "Sheet1". Проверьте существование объекта и правильность имени и пути.

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

веб-поиск вообще не появился. И я в полном замешательстве.

все справки или вклад оценили!!!!

6 ответов


измените свойство" Build Action " Excel(.xlsx) к контенту и "копировать в выходной каталог", чтобы скопировать, если новее.

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

++ также не забудьте просмотреть и добавить файл excel на вкладке развертывания TestRun.файл конфигурации, который находится в сервере soution..:)


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

удачи!!!


У меня была аналогичная проблема, но я просто пытался развернуть простой XML-файл.

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


у меня было две проблемы здесь, одна была пропуск-правописание нужного листа в моем файле 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 на свою машину. Так я смогу решить свою проблему.


решения, которые я пробовал 1) добавлен файл данных в разделе развертывание локальных настроек 2) изменил свойства файла на "Content" и " Copy if newer" 3) жесткое кодирование местоположения файла в атрибуте элемента развертывания и в строке подключения в приложении.конфигурационный файл.

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

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


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