Как я могу ссылаться на встроенный файл данных для модульных тестов, управляемых данными?

StackOverflow https://stackoverflow.com/questions/1945863

Вопрос

Это мой сценарий, я хочу создать модульный тест, основанный на данных, и для того, чтобы быть независимым от среды, я хочу встроить файл данных в свою сборку.Как я могу ссылаться на это в DataSourceAttribute модульного теста?.

Я пытаюсь получить доступ к файлу Excel 2003 с помощью поставщика Microsoft Jet OleDB.Модульный тест работает нормально, когда файл находится на жестком диске, но не тогда, когда я пытаюсь получить доступ к встроенному файлу сборки.Вот мой пример:

Оригинал

[Элемент развертывания("IHRM.Инфраструктура.Хранилища.Tests\DataDriven.xls"), источник данных ("System.Data.OleDb", "Поставщик=Microsoft.Jet.OLEDB.4.0;Данные Source=/DataDirectory/\DataDriven.xls ;Расширенные свойства=\"Excel 8.0\"", "Sheet1$", DataAccessMethod.Последовательный), тестовый метод]

Предложенный

[Источник данных("System.Data.OleDb", "Поставщик=Microsoft.Jet.OLEDB.4.0;Источник данных="что сюда положить";Расширенные свойства=\"Excel 8.0\"", "Sheet1$", DataAccessMethod.Последовательный), DeploymentItem("IHRM.Инфраструктура.EFRepositories.Tests\DataDriven.xls"), метод тестирования]

Это было полезно?

Решение

Я сомневаюсь, что JET OLEDB имеет готовую поддержку подключения к базам данных на основе встроенных ресурсов.Я вижу два варианта решения этой проблемы:

1.извлеките ресурс

В вашем тесте Классифицировать инициализировать, вы могли бы извлеките ресурс сборки в известное место.Обратитесь к этому известному местоположению в строке подключения вашего JET.Снова очистите извлеченный файл в вашем тесте. Очистка класса.

2.напишите свой собственный источник данных

Ты мог бы уметь писать свои собственные DbProviderFactory - база данных который поддерживает доступ к встроенным файлам Excel.Чтобы сделать такую фабрику доступной для обнаружения в mstest, вам необходимо зарегистрируйте свою фабрику с DbProviderFactories ( базы данных ).

Чтобы увидеть, как mstest обрабатывает источники данных внутри компании, откройте Microsoft.VisualStudio.QualityTools.Common.dll сборка с отражатель и начните идти по следу, разбирая Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top