Пошаговое руководство. Использование файла конфигурации для определения источника данных
В этом пошаговом руководстве демонстрируется использование источника данных, определенного в файле app.config, для модульного тестирования. Вы узнаете, как создать файл app.config, определяющий источник данных, который может использоваться классом DataSourceAttribute. В данном пошаговом руководстве представлены следующие задачи:
создание файла app.config;
определение настраиваемого раздела конфигурации;
определение строк подключения;
определение источников данных;
доступ к источникам данных с помощью класса DataSourceAttribute.
Примечание.
На текущий момент DataSourceAttribute поддерживается только на платформе .NET Framework.
Необходимые компоненты
Для работы с этим пошаговым руководством убедитесь в следующем:
Visual Studio Enterprise
Microsoft Access или Microsoft Excel для предоставления данных хотя бы для одного из методов теста;
решение Visual Studio, содержащее тестовый проект.
Добавление к проекту файла app.config
Если файл app.config уже существует в тестовом проекте, переходите к разделу Определение настраиваемого раздела конфигурации.
Щелкните тестовый проект правой кнопкой мыши в обозревателе решений и выберите Добавить>Новый элемент.
Откроется окно Добавление нового элемента. Если вы не видите все шаблоны элементов, выберите "Показать все шаблоны" и выберите шаблон элемента.
Выберите шаблон Файл конфигурации приложения и нажмите кнопку Добавить.
Определение настраиваемого раздела конфигурации
Просмотрите файл app.config. Он содержит как минимум объявление XML и корневой элемент.
Добавление настраиваемого раздела конфигурации в файл app.config
Корневым элементом файла app.config должен быть элемент configuration. Создайте элемент configSections в элементе configuration. configSections должен быть первым элементом в файле app.config.
В элементе configSections создайте элемент section.
В элементе section добавьте атрибут с именем
name
и задайте для него значениеmicrosoft.visualstudio.testtools
. Добавьте еще один атрибут с именемtype
и задайте для него значениеMicrosoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions
.
Элемент section должен принять следующий вид:
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
Примечание.
Имя сборки должно соответствовать версии, которую вы используете.
Определение строк подключения
Строки подключения определяют сведения, относящиеся к конкретному поставщику, для доступа к источникам данных. Строки подключения, определенные в файлах конфигурации, предоставляют сведения о поставщике данных для повторного использования в приложении. В этом разделе создайте две строки подключения, которые будут использоваться источниками данных, определенными в настраиваемом разделе конфигурации.
Определение строк подключения
После элемента configSections создайте элемент connectionStrings.
В элементе connectionStrings создайте два элемента add.
В первом элементе add создайте следующие атрибуты и значения для подключения к базе данных Microsoft Access:
Атрибут | Values |
---|---|
name |
"MyJetConn" |
connectionString |
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" |
providerName |
"System.Data.OleDb" |
Во втором элементе add создайте следующие атрибуты и значения для подключения к таблице Microsoft Excel:
Атрибут | Values |
---|---|
name |
"MyExcelConn" |
connectionString |
"Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" |
providerName |
"System.Data.Odbc" |
Элемент connectionStrings должен принять следующий вид:
<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>
Определение источников данных
Раздел источников данных содержит четыре атрибута, которые используются тестовой подсистемой для получения данных из источника данных.
name
определяет удостоверение, используемое DataSourceAttribute для указания источника данных для использования.connectionString
определяет строку подключения, созданную в предыдущем разделе "Определение строк подключения".dataTableName
определяет таблицу или лист, которые содержат данные, используемые в тесте.dataAccessMethod
определяет способ доступа к значениям данных в источнике данных.
В этом разделе мы определим два источника данных для использования в модульном тесте.
Определение источников данных
После элемента connectionStrings создайте элемент microsoft.visualstudio.testtools. Этот раздел файла был создан в разделе "Определение настраиваемого раздела конфигурации".
В элементе microsoft.visualstudio.testtools создайте элемент dataSources.
В элементе dataSources создайте два элемента add.
В первом элементе add создайте следующие атрибуты и значения для источника данных Microsoft Access:
Атрибут | Values |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
Во втором элементе add создайте следующие атрибуты и значения для источника данных Microsoft Excel:
Атрибут | Values |
---|---|
Name |
"MyExcelDataSource" |
connectionString |
"MyExcelConn" |
dataTableName |
"Sheet1$" |
dataAccessMethod |
"Sequential" |
Элемент microsoft.visualstudio.testtools должен принять следующий вид:
<microsoft.visualstudio.testtools>
<dataSources>
<add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
<add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
</dataSources>
</microsoft.visualstudio.testtools>
Окончательный файл app.config должен принять следующий вид:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
</configSections>
<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>
<microsoft.visualstudio.testtools>
<dataSources>
<add name="MyJetDataSource" connectionString="MyJetConn" dataTableName="MyDataTable" dataAccessMethod="Sequential"/>
<add name="MyExcelDataSource" connectionString="MyExcelConn" dataTableName="Sheet1$" dataAccessMethod="Sequential"/>
</dataSources>
</microsoft.visualstudio.testtools>
</configuration>
Создание модульного теста, использующего источники данных, определенные в файле app.config
Определив файл app.config, мы создадим модульный тест, использующий данные, находящиеся в источниках данных, которые определены в файле app.config. В этом разделе мы рассмотрим:
создание источников данных, определенных в файле app.config;
использование источников данных в двух методах теста, сравнивающих значения в каждом источнике данных.
Создание источника данных Microsoft Access
Создайте файл базы данных Microsoft Access с именем testdatasource.accdb.
Создайте таблицу с именем
MyDataTable
в testdatasource.accdb.Создайте два поля в таблице
MyDataTable
с именемArg1
иArg2
, используя тип данныхNumber
.Добавьте пять сущностей в таблицу
MyDataTable
со следующими значениями дляArg1
иArg2
соответственно: (10,50), (3,2), (6,0), (0,8) и (12312,1000).Сохраните и закройте базу данных.
Измените строку подключения так, чтобы она указывала на расположение базы данных. Измените значение
Data Source
так, чтобы оно отражало расположение базы данных.
Создание источника данных Microsoft Excel
Создайте электронную таблицу Microsoft Excel с именем data.xlsx.
Создайте лист с именем
Sheet1
, если он еще не существует в data.xlsx.Создайте на листе
Sheet1
два заголовка столбцов и назовите ихVal1
иVal2
.Добавьте пять сущностей в таблицу
Sheet1
со следующими значениями дляVal1
иVal2
соответственно: (1,1), (2,2), (3,3), (4,4) и (5,0).Сохраните и закройте таблицу.
Измените строку подключения так, чтобы она указывала на расположение таблицы. Измените значение
dbq
так, чтобы оно отражало расположение таблицы.
Создание модульного теста с помощью источников данных файла app.config
Добавьте модульный тест в тестовый проект.
Замените автоматически созданное содержимое модульного теста следующим кодом.
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace TestProject1 { [TestClass] public class UnitTest1 { private TestContext context; public TestContext TestContext { get { return context; } set { context = value; } } [TestMethod()] [DeploymentItem("MyTestProject\\testdatasource.accdb")] [DataSource("MyJetDataSource")] public void MyTestMethod() { int a = Int32.Parse(context.DataRow["Arg1"].ToString()); int b = Int32.Parse(context.DataRow["Arg2"].ToString()); Assert.AreNotEqual(a, b, "A value was equal."); } [TestMethod()] [DeploymentItem("MyTestProject\\data.xlsx")] [DataSource("MyExcelDataSource")] public void MyTestMethod2() { Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]); } } }
Проверьте атрибуты DataSource. Обратите внимание на имена параметров из файла app.config.
Выполните построение решения и запустите тесты MyTestMethod и MyTestMethod2.
Важно!
Разверните элементы как источники данных, чтобы они были доступны для теста в каталоге развертывания.