Tutorial: Utilizar un archivo de configuración para definir un origen de datos
Actualización: noviembre 2007
Este tutorial muestra cómo utilizar un origen de datos definido en un archivo app.config para pruebas unitarias. Obtendrá información sobre cómo crear un archivo app.config que defina un origen de datos que pueda ser utilizado por la clase DataSourceAttribute. Las tareas que se presentan en este tutorial son las siguientes:
Crear un archivo app.config.
Definir una sección de configuración personalizada.
Definir cadenas de conexión.
Definir los orígenes de datos.
Obtener acceso a los orígenes de datos utilizando la clase DataSourceAttribute.
Requisitos previos
Para completar este tutorial, necesitará:
Visual Studio Team System Test
Microsoft Access o Microsoft Excel para proporcionar datos para al menos uno de los métodos de prueba.
Una solución de Visual Studio 2005 que contiene un proyecto de prueba.
Crear el archivo app.config
Para agregar un archivo app.config al proyecto
Si su proyecto de prueba ya tiene un archivo app.config, vaya a Definir una sección de configuración personalizada.
Haga clic con el botón secundario en su proyecto de prueba en el Explorador de soluciones, seleccione Agregar y, a continuación, haga clic en Nuevo elemento.
Aparecerá la ventana Agregar nuevo elemento.
Seleccione la plantilla correspondiente a Archivo de configuración de aplicaciones y, a continuación, haga clic en Agregar.
Definir una sección de configuración personalizada
Examine el archivo app.config. Contiene por lo menos la declaración XML y un elemento raíz.
Para agregar la sección de configuración personalizada al archivo app.config
El elemento raíz de app.config debería ser el elemento configuration. Cree un elemento configSections dentro del elemento configuration. configSections debe ser el primer elemento del archivo app.config.
Dentro del elemento configSections, cree un elemento section.
En el elemento section, agregue un atributo llamado name y asígnele un valor igual a microsoft.visualstudio.testtools. Agregue otro atributo llamado type y asígnele un valor igual a Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.
El elemento section debe tener una apariencia similar a la siguiente:
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
Definir cadenas de conexión
Las cadenas de conexión definen información específica del proveedor para tener acceso a los orígenes de datos. Las cadenas de conexión definidas en archivos de configuración proporcionan información del proveedor de datos reutilizable en una aplicación. En esta sección, creará dos cadenas de conexión que serán utilizadas por orígenes de datos que se definen en la sección de configuración personalizada.
Para definir cadenas de conexión
Detrás del elemento configSections, cree un elemento connectionStrings.
Dentro del elemento connectionStrings, cree dos elementos add.
En el primer elemento add, cree los atributos y valores siguientes para una conexión a una base de datos de Microsoft Access:
Atributo |
Valores |
---|---|
name |
"MyJetConn" |
connectionString |
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" |
providerName |
"System.Data.OleDb" |
En el segundo elemento add, cree los atributos y valores siguientes para una conexión a una hoja de cálculo de Microsoft Excel:
name |
"MyExcelConn" |
connectionString |
"Dsn=Excel Files;dbq=data.xls;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" |
providerName |
"System.Data.Odbc" |
El elemento connectionStrings debe tener una apariencia similar a la siguiente:
<connectionStrings>
<add name="MyJetConn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xls;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5" providerName="System.Data.Odbc" />
</connectionStrings>
Definir orígenes de datos
La sección de orígenes de datos contiene cuatro atributos que son utilizados por el motor de prueba para recuperar datos de un origen de datos.
name define la identidad utilizada por DataSourceAttribute para especificar el origen de datos a utilizar.
connectionString identifica la cadena de conexión creada en la sección anterior, Definir cadenas de conexión.
dataTableName define la tabla o la hoja que contiene los datos para utilizar en la prueba.
dataAccessMethod define la técnica para tener acceso a los valores de datos en el origen de datos.
En esta sección, definirá dos orígenes de datos para utilizar en una prueba unitaria.
Para definir orígenes de datos
Detrás del elemento connectionStrings, cree un elemento microsoft.visualstudio.testtools. Esta sección se creó en la sección Definir una sección de configuración personalizada.
Dentro del elemento microsoft.visualstudio.testtools, cree un elemento dataSources.
Dentro del elemento dataSources, cree dos elementos add.
En el primer elemento add, cree los atributos y valores siguientes para un origen de datos de Microsoft Access:
Atributo |
Valores |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
En el segundo elemento add, cree los atributos y valores siguientes para un origen de datos de Microsoft Excel:
Name |
"MyExcelDataSource" |
connectionString |
"MyExcelConn" |
dataTableName |
"Sheet1$" |
dataAccessMethod |
"Sequential" |
El elemento microsoft.visualstudio.testtools debe tener una apariencia similar a la siguiente:
<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>
El archivo app.config final debe tener una apariencia similar a la siguiente:
<?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.mdb; Persist Security Info=False;" providerName="System.Data.OleDb" />
<add name="MyExcelConn" connectionString="Dsn=Excel Files;dbq=data.xls;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>
Crear una prueba unitaria utilizando orígenes de datos definidos en app.config
Ahora que se ha definido un archivo app.config, va a crear una prueba unitaria que utilice datos situados en los orígenes de datos que se definen en el archivo app.config. En este sección, haremos lo siguiente:
Crear los orígenes de datos situados en el archivo app.config.
Utilizar los orígenes de datos en dos métodos de prueba que comparan los valores de cada origen de datos.
Para crear un origen de datos de Microsoft Access
Cree una base de datos de Microsoft Access denominada testdatasource.mdb.
Cree una tabla y denomínela MyDataTable en testdatasource.mdb.
Cree dos campos en MyDataTable denominados Arg1 y Arg2 mediante el tipo de datos Number.
Agregue cinco entidades a MyDataTable con los valores siguientes para Arg1 y Arg2, respectivamente: (10,50), (3,2), (6,0) (0,8) y (12312,1000).
Guarde y cierre la base de datos.
Cambie la cadena de conexión de modo que señale la ubicación de la base de datos. Cambie el valor de Data Source para reflejar la ubicación de la base de datos.
Para crear un origen de datos de Microsoft Excel
Cree una hoja de cálculo de Microsoft Excel denominada data.xls.
Cree una hoja denominada Sheet1 si aún no existe en data.xls.
Cree dos encabezados de columna y denomínelos Val1 y Val2 en Sheet1.
Agregue cinco entidades a Sheet1 con los valores siguientes para Val1 y Val2, respectivamente: (1,1), (2,2), (3,3) (4,4) y (5,0).
Guarde y cierre la hoja de cálculo.
Cambie la cadena de conexión de modo que señale la ubicación de la hoja de cálculo. Cambie el valor de dbq para reflejar la ubicación de la hoja de cálculo.
Para crear una prueba unitaria mediante los orígenes de datos de app.config
Agregue una prueba unitaria al proyecto de prueba.
Para obtener más información, vea Cómo: Crear una prueba unitaria.
Reemplace el contenido de la prueba unitaria generado automáticamente por el código siguiente:
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.mdb")] [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.xls")] [DataSource("MyExcelDataSource")] public void MyTestMethod2() { Assert.AreEqual(context.DataRow["Val1"], context.DataRow["Val2"]); } } }
Examine los atributos DataSource. Observe los nombres de configuración del archivo app.config.
Genere su solución y ejecute las pruebas MyTestMethod y MyTestMethod2.
Nota importante: |
---|
Implemente los elementos como orígenes de datos para que la prueba tenga acceso a ellos en el directorio de implementación. Para obtener más información, vea Implementación de pruebas. |
Vea también
Tareas
Cómo: Crear un proyecto de pruebas
Cómo: Crear una prueba unitaria
Cómo: Configurar una prueba unitaria orientada a datos
Conceptos
Codificar una prueba unitaria orientada a datos
Solución de problemas de pruebas unitarias orientadas a datos
Otros recursos
Trabajar con pruebas unitarias