Tutorial: Utilizar un archivo de configuración para definir un origen de datosWalkthrough: Using a Configuration File to Define a Data Source

Este tutorial muestra cómo usar un origen de datos definido en un archivo app.config para pruebas unitarias.This walkthrough illustrates how to use a data source defined in an app.config file for unit testing. Aprenderá a crear un archivo app.config que define un origen de datos que se puede usar en la clase DataSourceAttribute.You will learn how to create an app.config file that defines a data source that can be used by the DataSourceAttribute class. En este tutorial se presentan las tareas siguientes:Tasks presented in this walkthrough include the following:

  • Creación de un archivo app.config.Creating an app.config file.

  • Definición de una sección de configuración personalizada.Defining a custom configuration section.

  • Definición de cadenas de conexión.Defining connection strings.

  • Definición de orígenes de datos.Defining the data sources.

  • Acceso a los orígenes de datos mediante la clase DataSourceAttribute.Accessing the data sources using the DataSourceAttribute class.

Requisitos previosPrerequisites

Para completar este tutorial, necesita lo siguiente:To complete this walkthrough, you need:

  • Visual Studio EnterpriseVisual Studio Enterprise

  • Que Microsoft Access o Microsoft Excel proporcione datos para al menos uno de los métodos de prueba.Either Microsoft Access or Microsoft Excel to provide data for at least one of the test methods.

  • Una solución de Visual Studio que contenga un proyecto de prueba.A Visual Studio solution that contains a test project.

Agregar un archivo app.config al proyectoAdd an app.config file to the project

  1. Si el proyecto de prueba ya incluye un archivo app.config, vaya a Definir una sección de configuración personalizada.If your test project already has an app.config file, go to Define a Custom Configuration Section.

  2. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto de prueba y luego seleccione Agregar > Nuevo elemento.Right-click your test project in the Solution Explorer, and then select Add > New Item.

    Se abrirá la ventana Agregar nuevo elemento.The Add New Item window opens.

  3. Seleccione la plantilla Archivo de configuración de aplicaciones y haga clic en Agregar.Select the Application Configuration File template and click Add.

Definir una sección de configuración personalizadaDefine a Custom Configuration Section

Examine el archivo app.config.Examine the app.config file. Debe contener al menos la declaración XML y un elemento raíz.It contains at least the XML declaration and a root element.

Para agregar la sección de configuración personalizada al archivo app.configTo add the custom configuration section to the app.config file

  1. El elemento raíz de app.config debe ser el elemento configuration.The root element of app.config should be the configuration element. Crear un elemento configSections dentro del elemento configuration.Create a configSections element within the configuration element. El elemento configSections debe ser el primero en el archivo app.config.The configSections should be the first element in the app.config file.

  2. En el elemento configSections, cree un elemento section.Within the configSections element, create a section element.

  3. En el elemento section, agregue un atributo denominado name y asígnele un valor igual a microsoft.visualstudio.testtools.In the section element, add an attribute called name and assign it a value of microsoft.visualstudio.testtools. Agregue otro atributo denominado type y asígnele un valor de Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.Add another attribute called type and assign it a value of Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

El elemento section debe ser similar a este:The section element should look similar to this:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

Nota

El nombre del ensamblado debe coincidir con la compilación de Microsoft Visual Studio .NET Framework que está usando.The assembly name must match the Microsoft Visual Studio .NET Framework build that you are using. Establezca la versión en 9.0.0.0 si usa Visual Studio .NET Framework 3.5.Set the Version to 9.0.0.0 if you are using the Visual Studio .NET Framework 3.5. Si usa Visual Studio .NET Framework 2.0, establezca la versión en 8.0.0.0.If you are using the Visual Studio .NET Framework 2.0, set the Version to 8.0.0.0.

Definir cadenas de conexiónDefine Connection Strings

Las cadenas de conexión definen la información específica del proveedor para acceder a los orígenes de datos.The connection strings define provider-specific information for accessing data sources. Las cadenas de conexión definidas en los archivos de configuración proporcionan información del proveedor de datos reutilizable en una aplicación.Connection strings defined in configuration files provide reusable data provider information across an application. En esta sección, creará dos cadenas de conexión para que las usen los orígenes de datos definidos en la sección de configuración personalizada.In this section, you create two connection strings that will be used by data sources that are defined in the Custom Configuration Section.

Para definir cadenas de conexión:To define connection strings

  1. Después del elemento configSections, cree un elemento connectionStrings.After the configSections element, create a connectionStrings element.

  2. En el elemento connectionStrings, cree dos elementos add.Within the connectionStrings element, create two add elements.

  3. En el primer elemento add, cree los atributos y los valores siguientes para una conexión con una base de datos de Microsoft Access:In the first add element, create the following attributes and values for a connection to a Microsoft Access database:

AtributoAttribute ValoresValues
name "MyJetConn"
connectionString "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\testdatasource.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

En el segundo elemento add, cree los atributos y los valores siguientes para una conexión con una hoja de cálculo de Microsoft Excel:In the second add element, create the following attributes and values for a connection to a Microsoft Excel spreadsheet:

name "MyExcelConn"
connectionString "Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5"
providerName "System.Data.Odbc"

Este elemento connectionStrings debe ser similar a este:The connectionStrings element should look similar to this:

<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>

Definir orígenes de datosDefine Data Sources

La sección de orígenes de datos contiene cuatro atributos con los que el motor de pruebas recuperará los datos de un origen de datos.The data sources section contains four attributes that are used by the test engine to retrieve data from a data source.

  • name define la identidad con la que DataSourceAttribute especifica el origen de datos que se debe usar.name defines the identity used by the DataSourceAttribute to specify which data source to use.

  • connectionString identifica la cadena de conexión que ha creado en la sección Definir cadenas de conexión anterior.connectionString identifies the connection string created in the previous Define Connection Strings section.

  • dataTableName define la tabla o la hoja que contiene los datos que se van a usar en la prueba.dataTableName defines the table or sheet that holds the data to use in the test.

  • dataAccessMethod define la técnica para acceder a los valores de datos del origen de datos.dataAccessMethod defines the technique for accessing data values in the data source.

En esta sección, definirá dos orígenes de datos que se usarán en una prueba unitaria.In this section, you'll define two data sources to use in a unit test.

Para definir orígenes de datos:To define data sources

  1. Después del elemento connectionStrings, cree un elemento microsoft.visualstudio.testtools.After the connectionStrings element, create a microsoft.visualstudio.testtools element. El contenido de esta sección ya se ha creado en Definir una sección de configuración personalizada.This section was created in Define a Custom Configuration Section.

  2. En el elemento microsoft.visualstudio.testtools, cree un elemento dataSources.Within the microsoft.visualstudio.testtools element, create a dataSources element.

  3. En el elemento dataSources, cree dos elementos add.Within the dataSources element, create two add elements.

  4. En el primer elemento add, cree los atributos y los valores siguientes para un origen de datos de Microsoft Access:In the first add element, create the following attributes and values for a Microsoft Access data source:

AtributoAttribute ValoresValues
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

En el segundo elemento add, cree los atributos y los valores siguientes para un origen de datos de Microsoft Excel:In the second add element, create the following attributes and values for a Microsoft Excel data source:

Name "MyExcelDataSource"
connectionString "MyExcelConn"
dataTableName "Sheet1$"
dataAccessMethod "Sequential"

El elemento microsoft.visualstudio.testtools debe ser similar al siguiente:The microsoft.visualstudio.testtools element should look similar to this:

<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 ser similar a este:The final app.config file should look similar to this:

<?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>

Crear una prueba unitaria que use los orígenes de datos definidos en app.configCreate a unit test that uses data sources defined in app.config

Una vez definido el archivo app.config, deberá crear una prueba unitaria que use los datos ubicados en los orígenes de datos definidos en dicho archivo.Now that an app.config file has been defined, you will create a unit test that uses data located in the data sources that are defined in the app.config file. En esta sección:In this section, we will:

  • Creará los orígenes de datos que se encuentran en el archivo app.config.Create the data sources found in the app.config file.

  • Usará los orígenes de datos en dos métodos de prueba que comparan los valores de cada uno de estos orígenes.Use the data sources in two test methods that compare the values in each data source.

Para crear un origen de datos de Microsoft Access:To create a Microsoft Access data source

  1. Cree una base de datos de Microsoft Access denominada testdatasource.accdb.Create a Microsoft Access database named testdatasource.accdb.

  2. Cree una tabla y asígnele el nombre MyDataTable en testdatasource.accdb.Create a table and name it MyDataTable in testdatasource.accdb.

  3. Cree dos campos en MyDataTable denominados Arg1 y Arg2 con el tipo de datos Number.Create two fields in MyDataTable named Arg1 and Arg2 using the Number data type.

  4. 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).Add five entities to MyDataTable with the following values for Arg1 and Arg2, respectively: (10,50), (3,2), (6,0), (0,8) and (12312,1000).

  5. Guarde y cierre la base de datos.Save and close the database.

  6. Cambie la cadena de conexión para que apunte a la ubicación de la base de datos.Change the connection string to point to the location of the database. Cambie el valor de Data Source para que refleje la ubicación de la base de datos.Change the value of Data Source to reflect the location of the database.

Para crear un origen de datos de Microsoft Excel:To create a Microsoft Excel data source

  1. Cree una hoja de cálculo de Microsoft Excel denominada data.xlsx.Create a Microsoft Excel spreadsheet named data.xlsx.

  2. Cree una hoja denominada Sheet1 si no existe en data.xlsx.Create a sheet named Sheet1 if it does not already exist in data.xlsx.

  3. Cree dos encabezados de columna y asígneles los nombres de Val1 y Val2 en Sheet1.Create two column headers and name them Val1 and Val2 in Sheet1.

  4. 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).Add five entities to Sheet1 with the following values for Val1 and Val2, respectively: (1,1), (2,2), (3,3), (4,4) and (5,0).

  5. Guarde y cierre la hoja de cálculo.Save and close the spreadsheet.

  6. Cambie la cadena de conexión para que apunte a la ubicación de la hoja de cálculo.Change the connection string to point to the location of the spreadsheet. Cambie el valor de dbq para que refleje la ubicación de la hoja de cálculo.Change the value of dbq to reflect the location of the spreadsheet.

Para crear una prueba unitaria con los orígenes de datos de app.config:To create a unit test using the app.config data sources

  1. Agregue una prueba unitaria al proyecto de prueba.Add a unit test to the test project.

  2. Reemplace el contenido de la prueba unitaria generado automáticamente por el código siguiente:Replace the auto-generated contents of the unit test with the following code:

    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"]);
            }
        }
    }
    
  3. Examine los atributos DataSource.Examine the DataSource attributes. Observe los nombres de configuración del archivo app.config.Notice the setting names from the app.config file.

  4. Compile la solución y ejecute las pruebas MyTestMethod y MyTestMethod2.Build your solution and run MyTestMethod and MyTestMethod2 tests.

Importante

Implemente los elementos como los orígenes de datos, para que la prueba pueda acceder a ellos en el directorio de implementación.Deploy items like data sources so that they are accessible to the test in the deployment directory.

Vea tambiénSee also