Пошаговое руководство. Использование файла конфигурации для определения источника данных
В этом пошаговом руководстве показано, как использовать источник данных, определенный в файле 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 должен быть элементом конфигурации . Создайте элемент configSections в элементе конфигурации . configSections должен быть первым элементом в файле app.config.
В элементе configSections создайте элемент раздела.
В разделе элемент добавьте атрибут с именем
name
и назначьте его значениемmicrosoft.visualstudio.testtools
. Добавьте еще один атрибут с именемtype
и назначьте его значениеMicrosoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions
.
Элемент раздела должен выглядеть следующим образом:
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
Заметка
Имя сборки должно соответствовать используемой версии.
Определение строк подключения
Строки подключения определяют сведения, относящиеся к поставщику, для доступа к источникам данных. Строки подключения, определенные в файлах конфигурации, предоставляют повторно используемые сведения о поставщике данных в приложении. В этом разделе вы создадите две строки подключения, которые будут использоваться источниками данных, определенными в разделе пользовательской конфигурации.
Осторожность
Строка подключения может содержать конфиденциальные данные (например, пароль). Строка подключения хранится в виде обычного текста в исходном коде и в скомпилированной сборке. Ограничение доступа к исходному коду и сборке для защиты этой конфиденциальной информации.
Определение строк подключения
После элемента configSections создайте элемент connectionStrings.
В элементе connectionStrings создайте два элемента add.
В первом добавьте элемент, создайте следующие атрибуты и значения для подключения к базе данных Microsoft Access:
Атрибут | Значения |
---|---|
name |
"MyJetConn" |
connectionString |
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;" |
providerName |
"System.Data.OleDb" |
Во втором добавьте элемент, создайте следующие атрибуты и значения для подключения к электронной таблице Microsoft Excel:
Атрибут | Значения |
---|---|
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 создайте два элемента добавить.
В первом добавьте элемент, создайте следующие атрибуты и значения для источника данных Microsoft Access:
Атрибут | Значения |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
Во втором добавьте элемент, создайте следующие атрибуты и значения для источника данных Microsoft Excel:
Атрибут | Значения |
---|---|
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.Создайте два заголовка столбца и назовите их
Val1
иVal2
вSheet1
.Добавьте пять сущностей в
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.
Важно
Разверните такие элементы, как источники данных, чтобы они были доступны для теста в каталоге развертывания.
Связанное содержимое
- Протестируйте ваш код модульными тестами
- Практическое руководство. Создание модульного теста на основе данных