Compartir a través de


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

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

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

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

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

  2. Dentro del elemento configSections, cree un elemento section.

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

  1. Detrás del elemento configSections, cree un elemento connectionStrings.

  2. Dentro del elemento connectionStrings, cree dos elementos add.

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

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

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

  3. Dentro del elemento dataSources, cree dos elementos add.

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

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

  2. Cree una tabla y denomínela MyDataTable en testdatasource.mdb.

  3. Cree dos campos en MyDataTable denominados Arg1 y Arg2 mediante el tipo de datos Number.

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

  5. Guarde y cierre la base de datos.

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

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

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

  3. Cree dos encabezados de columna y denomínelos Val1 y Val2 en 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).

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

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

  1. Agregue una prueba unitaria al proyecto de prueba.

    Para obtener más información, vea Cómo: Crear una prueba unitaria.

  2. 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"]);
            }
        }
    }
    
  3. Examine los atributos DataSource. Observe los nombres de configuración del archivo app.config.

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

Cómo: Generar una prueba unitaria

Implementación de pruebas