Как я могу ссылаться на встроенный файл данных для модульных тестов, управляемых данными?
-
20-09-2019 - |
Вопрос
Это мой сценарий, я хочу создать модульный тест, основанный на данных, и для того, чтобы быть независимым от среды, я хочу встроить файл данных в свою сборку.Как я могу ссылаться на это в 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
.