Demonstra Passo a passo: Usando um arquivo de configuração para definir uma fonte de dados

Essa passagem ilustra como usar uma fonte de dados definida em um arquivo app.config para testes da unidade. Você aprenderá a criar um arquivo app. config que define uma fonte de dados pode ser usada pela DataSourceAttribute classe. Tarefas apresentadas nesta explicação incluem o seguinte:

  • Criar um arquivo app.config.

  • Definir uma seção de configuração personalizada.

  • Definir sequências de conexão.

  • Definir as fontes de dados.

  • Acessando os dados de fontes usando o DataSourceAttribute classe.

Pré-requisitos

Para concluir esta explicação passo a passo, será necessário:

  • Visual Studio PremiumouVisual Studio Ultimate

  • O Microsoft Access ou o Microsoft Excel para fornecer dados para pelo menos um dos métodos de teste.

  • A Microsoft Visual Studio 2010 solução que contém um projeto de teste.

Crie o arquivo App.config

Adicionar um arquivo app.config para o projeto

  1. Se seu projeto de teste já possui um arquivo app.config, vá para Define a Custom Configuration Section.

  2. Clique com o botão direito do mouse no seu projeto de teste no Solution Explorer, aponte para Add e depois clique em New Item.

    A janela Add New Item abre.

  3. Selecione o modelo Application Configuration File e clique em Add.

Defina uma seção de configuração personalizada

Examine o arquivo app. config. Ele contém pelo menos a declaração XML e um elemento raiz.

Adicionar a seção de configuração personalizada para o arquivo app.config

  1. O elemento raiz do App. config deve ser a configuration elemento. Criar um configSections elemento dentro do configuration elemento. O configSections deve ser o primeiro elemento no arquivo app. config.

  2. Dentro do configSections elemento, criar um section elemento.

  3. No section elemento, adicione um atributo chamado name e atribua um valor igual a- microsoft.visualstudio.testtools. Adicione outro atributo chamado type e atribuir um valor igual a ela Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

O section elemento deve parecer semelhante a esta:

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

O nome do assembly deve coincidir com o Visual Studio da Microsoft.NET Framework de compilação que você está usando. Defina a versão para 9.0.0.0 se você estiver usando o Visual Studio.NET Framework 3.5. Se você estiver usando o Visual Studio.NET Framework 2.0, defina a versão para 8.0.0.0.

Defina sequências de conexão

As sequências de conexão definem informações específicas de provedor para acessar fontes de dados. Sequências de conexão definidas em arquivos de configuração fornecem informações de provedor de dados reutilizáveis através de um aplicativo. Nesta seção, você cria duas sequências de conexão que serão usadas por fontes de dados que estão definidas na seção de Configuração personalizada.

Definir sequências de conexão

  1. Após a configSections elemento, criar um connectionStrings elemento.

  2. Dentro do connectionStrings elemento, criar dois add elementos.

  3. No primeiro add elemento, crie os seguintes atributos e valores para uma conexão com um banco de dados do 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"

Na segunda add elemento, crie os seguintes atributos e valores para uma conexão para uma planilha do Microsoft Excel:

name

"MyExcelConn"

connectionString

"Dsn=Excel Files;dbq=data.xlsx;defaultdir=.; driverid=790;maxbuffersize=2048;pagetimeout=5"

providerName

"System.Data.Odbc"

O connectionStrings elemento deve parecer semelhante a esta:

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

Defina fontes de dados

A seção fontes de dados contém quatro atributos que são usados pelo mecanismo de teste para recuperar dados de uma fonte de dados.

  • nameDefine a identidade usada pelo DataSourceAttribute para especificar qual fonte de dados para uso.

  • connectionStringidentifica a seqüência de conexão criada na seção anterior Defina seqüências de conexão.

  • dataTableNameDefine a tabela ou planilha que contém os dados a serem usados no teste.

  • dataAccessMethodDefine a técnica para acessar valores de dados na fonte de dados.

Nesta seção, você irá definir duas fontes de dados para usar em um teste de unidade.

Definir fontes de dados

  1. Após a connectionStrings elemento, criar um microsoft.visualstudio.testtools elemento. Esta seção foi criada na seção Defina uma seção de configuração personalizada.

  2. Dentro do microsoft.visualstudio.testtools elemento, criar um dataSources elemento.

  3. Dentro do dataSources elemento, criar dois add elementos.

  4. No primeiro add elemento, crie os seguintes atributos e valores de uma fonte de dados do Microsoft Access:

Atributo

Valores

name

"MyJetDataSource"

connectionString

"MyJetConn"

dataTableName

"MyDataTable"

dataAccessMethod

"Sequential"

Na segunda add elemento, crie os seguintes atributos e valores de uma fonte de dados do Microsoft Excel:

Name

"MyExcelDataSource"

connectionString

"MyExcelConn"

dataTableName

"Sheet1$"

dataAccessMethod

"Sequential"

O microsoft.visualstudio.testtools elemento deve parecer semelhante a esta:

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

O arquivo app.config final deve parecer semelhante a este:

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

Crie um teste de unidade usando fontes de dados definidas em app.config

Agora que foi definido um arquivo app. config, você criará um teste de unidade que usa dados localizados em fontes de dados que são definidas no arquivo app. config. Esta seção, nós iremos:

  • Criar fontes de dados encontradas no arquivo app.config.

  • Usar as fontes de dados em dois métodos de teste que comparam os valores em cada fonte de dados.

Criar uma fonte de dados do Microsoft Access

  1. Criar um banco de dados do Microsoft Access chamado testdatasource.accdb.

  2. Criar uma tabela e denomine MyDataTable na testdatasource.accdb.

  3. Crie dois campos em MyDataTable chamado Arg1 e Arg2 usando o Number tipo de dados.

  4. Adicione cinco entidades para MyDataTable com os seguintes valores para Arg1 e Arg2, respectivamente: (10,50), (3,2), (6,0), (0,8) e (12312,1000).

  5. Salve e feche o banco de dados.

  6. Altere a sequência de conexão para apontar para o local do banco de dados. Alterar o valor de Data Source para refletir o local do banco de dados.

Criar uma fonte de dados do Microsoft Excel

  1. Crie uma planilha do Microsoft Excel chamada data.xlsx.

  2. Crie uma planilha eletrônica chamada Sheet1 se ela ainda não existir no data.xlsx.

  3. Crie dois cabeçalhos de coluna e nomeá-los Val1 e Val2 na Sheet1.

  4. Adicione cinco entidades para Sheet1 com os seguintes valores para Val1 e Val2, respectivamente: (1,1), (2,2), (3,3), (4,4) e (5,0).

  5. Salve e feche a planilha eletrônica.

  6. Altere a sequência de conexão para apontar para o local da planilha eletrônica. Alterar o valor de dbq para refletir o local da planilha.

Criar um teste de unidade usando as fontes de dados do app.config

  1. Adicione um teste de unidade ao projeto de teste.

    Para obter mais informações, consulte Criando e executando testes de unidade para o código existente.

  2. Substitua os conteúdos gerados automaticamente do teste de unidade pelo seguinte código:

    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 os atributos DataSource. Observe os nomes de configuração do arquivo app.config.

  4. Compile sua solução e execute os testes MyTestMethod e MyTestMethod2.

Observação importanteImportante

Implante itens como fontes de dados para que eles fiquem acessíveis para o teste no diretório de implantação.

Consulte também

Conceitos

Verificando o código usando testes de unidade

Criando e executando testes de unidade para o código existente

Testando o aplicativo

Como: Criar um teste de unidade orientado a dados