Пошаговое руководство. Использование файла конфигурации для определения источника данных
В данном руководстве показано использование источника данных, определенного в файле app.config, для модульного тестирования.Здесь описано создание файла app.config для определения источника данных, используемого классом DataSourceAttribute.В данном пошаговом руководстве представлены следующие задачи.
Создание файла app.config.
Определение пользовательского раздела конфигурации.
Определение строк подключения.
Определение источников данных.
Доступ к источникам данных с помощью класса DataSourceAttribute.
Обязательные компоненты
Для выполнения данного пошагового руководства требуется:
Visual Studio Premium или Visual Studio Ultimate
Приложение Microsoft Access или Microsoft Excel для предоставления данных по крайней мере одному из методов теста.
Решение Visual Studio 2012, содержащее тестовый проект.
Создание файла app.config
Добавление файла аpp.config к проекту
Если файл app.config уже существует в проекте, перейдите к разделу Определение пользовательского раздела конфигурации.
В обозревателе решений щелкните правой кнопкой мыши тестовый проект, выберите команду Добавить, затем — Новый элемент.
Откроется диалоговое окно Добавление нового элемента.
Выберите шаблон Файл конфигурации приложения и затем нажмите кнопку Добавить.
Определение пользовательского раздела конфигурации
Просмотрите файл app.config.Он содержит, как минимум, объявление XML и корневой элемент.
Добавление пользовательского раздела конфигурации к файлу app.config
Корневым элементом app.config должен быть элемент configuration.Создайте элемент configSections внутри элемента configuration.Первым элементом в файле app.config должен быть configSections.
Создайте элемент section внутри элемента configSections.
В элемент section добавьте атрибут с именем name и присвойте ему значение microsoft.visualstudio.testtools.Добавьте еще один атрибут с именем type и присвойте ему значение Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Элемент section должен выглядеть следующим образом.
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
Примечание |
---|
Имя сборки должно соответствовать используемому построению Microsoft Visual Studio .NET Framework.Выберите версию 9.0.0.0, если используется Visual Studio .NET Framework 3.5.Выберите версию 8.0.0.0, если используется Visual Studio .NET Framework 2.0. |
Определение строк подключения
В строках подключения определяются сведения, связанные с поставщиком, для доступа к источникам данных.Строки подключения, определенные в файлах конфигураций, предоставляют приложению многократно используемые сведения о поставщике данных.В этом разделе создаются две строки подключения, которые будут использовать источники данных, определенные в пользовательском разделе конфигурации.
Определение строк подключения
Создайте элемент connectionStrings после элемента configSections.
Внутри элемента connectionStrings создайте два элемента add.
В первом элементе 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" |
В втором элементе add создайте следующие атрибуты и значения для подключения к электронной таблице 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 определяет способ доступа к значениям данных в источнике данных.
В этом разделе будут определены два источника данных для использования в модульном тесте.
Определение источников данных
Создайте элемент microsoft.visualstudio.testtools после элемента connectionStrings.Данный подраздел был создан в разделе "Определение пользовательского раздела конфигурации".
Создайте элемент dataSources внутри элемента microsoft.visualstudio.testtools.
Внутри элемента dataSources создайте два элемента add.
В первом элементе add создайте следующие атрибуты и значения для источника данных Microsoft Access.
Атрибут |
Значения |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
В втором элементе add создайте следующие атрибуты и значения для источника данных 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.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</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.
Важно |
---|
Разверните такие элементы как источники данных, чтобы они стали доступны тесту, в каталоге развертывания. |
См. также
Основные понятия
Проверка кода при помощи модульных тестов
Практическое руководство. Создание модульного теста, управляемого данными