Compartir vía


Tutorial: Uso de un archivo de configuración para definir un origen de datos

En este tutorial se muestra cómo usar un origen de datos definido en un archivo app.config para pruebas unitarias. Aprenderá a crear un archivo app.config que defina un origen de datos que pueda usar la clase DataSourceAttribute. Las tareas presentadas en este tutorial incluyen lo siguiente:

  • Crear un archivo app.config.

  • Definición de una sección de configuración personalizada.

  • Definición de cadenas de conexión.

  • Definir los orígenes de datos.

  • Acceso a los orígenes de datos mediante la clase DataSourceAttribute.

Nota

DataSourceAttribute solo se admite actualmente en .NET Framework.

Prerrequisitos

Para completar este tutorial, necesita:

  • Visual Studio Enterprise

  • Microsoft Access o Microsoft Excel para proporcionar datos para al menos uno de los métodos de prueba.

  • Solución de Visual Studio que contiene un proyecto de prueba.

Agregar un archivo app.config al proyecto

  1. Si su proyecto de prueba ya tiene un archivo de app.config, vaya a Definir una sección de configuración personalizada.

  2. Haga clic con el botón derecho en el proyecto de prueba en Explorador de solucionesy seleccione Agregar>nuevo elemento.

    Se abre la ventana Agregar nuevo elemento. Si no ve todas las plantillas de elemento, elija Mostrar todas las plantillasy, a continuación, elija la plantilla de elemento.

  3. Seleccione la plantilla de archivo de configuración de aplicaciones y haga clic en Agregar.

Definición de una sección de configuración personalizada

Examine el archivo app.config. Contiene al menos la declaración XML y un elemento raíz.

Para agregar la sección de configuración personalizada al archivo app.config

  1. El elemento raíz de app.config debe ser el elemento de configuración . Crear un elemento configSections dentro del elemento configuration. El elemento configSections debe ser el primero en el archivo app.config.

  2. En el elemento configSections, cree un elemento section.

  3. En la sección elemento , agregue un atributo denominado name y asígnele un valor de microsoft.visualstudio.testtools. Agregue otro atributo denominado type y asígnele un valor de Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.

El elemento section debe ser similar a este:

<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />

Nota

El nombre del ensamblado debe coincidir con la versión que se esté usando.

Definición de cadenas de conexión

Las cadenas de conexión definen información específica del proveedor para acceder a orígenes de datos. Las cadenas de conexión definidas en los 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 los orígenes de datos definidos en la sección de Configuración personalizada.

Cautela

La cadena de conexión puede contener datos confidenciales (por ejemplo, una contraseña). La cadena de conexión se almacena en texto sin formato en el código fuente y en el ensamblado compilado. Restrinja el acceso al código fuente y al ensamblado para proteger esta información confidencial.

Para definir cadenas de conexión

  1. Después del elemento configSections, cree un elemento connectionStrings.

  2. En el elemento connectionStrings, cree dos elementos add.

  3. En el primer elemento , añada el elemento y cree los siguientes atributos y valores 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.accdb; Persist Security Info=False;"
providerName "System.Data.OleDb"

En el segundo elemento , añada el elemento y cree los siguientes atributos y valores para una conexión a una hoja de cálculo de Microsoft Excel:

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

El elemento connectionStrings debe tener un aspecto similar al siguiente:

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

Definición de orígenes de datos

La sección orígenes de datos contiene cuatro atributos que usa el motor de pruebas para recuperar datos de un origen de datos.

  • name define la identidad usada por el DataSourceAttribute para especificar el origen de datos que se va a usar.

  • connectionString identifica la cadena de conexión creada en la sección Definir cadenas de conexión anteriores.

  • dataTableName define la tabla o hoja que contiene los datos que se van a usar en la prueba.

  • dataAccessMethod define la técnica para acceder a los valores de datos en el origen de datos.

En esta sección, definirá dos orígenes de datos para usarlos en una prueba unitaria.

Para definir orígenes de datos

  1. Después del elemento connectionStrings, cree un elemento microsoft.visualstudio.testtools. Esta sección se creó en Definir una sección de configuración personalizada.

  2. Dentro del elemento microsoft.visualstudio.testtools, cree un elemento dataSources .

  3. En el elemento dataSources, cree dos elementos add.

  4. En el primer elemento , añada el elemento y defina los siguientes atributos y valores para un origen de datos de Microsoft Access:

Atributo Valores
name "MyJetDataSource"
connectionString "MyJetConn"
dataTableName "MyDataTable"
dataAccessMethod "Sequential"

En el segundo elemento , agregue el elemento, y cree los siguientes atributos y valores para un origen de datos de Microsoft Excel:

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

El elemento microsoft.visualstudio.testtools debe tener un aspecto similar al 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 un aspecto similar al siguiente:

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

Crear una prueba unitaria que use orígenes de datos definidos en app.config

Ahora que se ha definido un archivo app.config, creará una prueba unitaria que use datos ubicados en los orígenes de datos definidos en el archivo app.config. En esta sección, haremos lo siguiente:

  • Cree los orígenes de datos que se encuentran en el archivo app.config.

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

  1. Cree una base de datos de Microsoft Access denominada testdatasource.accdb.

  2. Cree una tabla y asígnele el nombre MyDataTable en testdatasource.accdb.

  3. Cree dos campos en MyDataTable nombrados Arg1 y Arg2 usando el tipo de datos Number.

  4. Agregue cinco entidades a MyDataTable con los siguientes valores para Arg1 y Arg2, respectivamente: (10 50), (3,2), (6,0), (0,8) y (12312,1000).

  5. Guarde y cierre la base de datos.

  6. Cambie la cadena de conexión para que apunte a 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

  1. Cree una hoja de cálculo de Microsoft Excel denominada data.xlsx.

  2. Cree una hoja denominada Sheet1 si aún no existe en data.xlsx.

  3. Cree dos encabezados de columna y asígneles un nombre Val1 y Val2 en Sheet1.

  4. Agregue cinco entidades a Sheet1 con los siguientes valores para Val1 y Val2, respectivamente: (1,1), (2,2), (3,3), (4,4) y (5,0).

  5. Guarde y cierre la hoja de cálculo.

  6. Cambie la cadena de conexión para que apunte a 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 con los orígenes de datos de app.config

  1. Agregue una prueba unitaria al proyecto de prueba.

  2. Reemplace el contenido generado automáticamente de la prueba unitaria 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.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. Observe los nombres de configuración del archivo app.config.

  4. Compile la solución y ejecute las pruebas MyTestMethod y MyTestMethod2.

Importante

Implemente elementos como orígenes de datos para que sean accesibles para la prueba en el directorio de implementación.