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

Esta explicação passo a passo ilustra como usar uma fonte de dados definido em um arquivo app. config para teste de unidade.Você aprenderá como criar um arquivo app. config que define uma fonte de dados que pode ser usado pela DataSourceAttribute classe. Tarefas apresentadas nesta explicação passo a passo incluem o seguinte:

  • Criando um arquivo app. config.

  • A definição de uma seção de configuração .

  • Definir seqüências de conexão.

  • Definindo 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 teste .

  • A Visual Studio 2012a solução que contenha umprojetode teste.

Criar o arquivo app. config

Para adicionar um arquivo app. config para o projeto

  1. Se o seuprojeto de testejá possui um arquivo app. config, vá para definir uma seção de configuração personalizada.

  2. Clique com o botão direito do testeprojeto na Solution Explorer, aponte para Adde, em seguida, clique em Novo Item.

    O Add New Itemjanela é aberta.

  3. Selecione o Arquivo de configuração do aplicativo modelo e clique em Add.

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

Examine o arquivo app. config.Ele contém pelo menos adeclaração de XMLe um elemento raiz .

Para adicionar a seção de configuração de 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 atribuir it um valor igual microsoft.visualstudio.testtools.Adicione outro atributo chamado type e atribuir it um valor igualMicrosoft.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 Microsoft Visual Studio .NET Framework 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.

Definir seqüências de conexão

As seqüências de conexão definem informações específicas do provedor para acessar fontes de dados.Seqüências de conexão definidas nos arquivos de configuração fornecem informações de provedor de dados de reutilizáveis através de um aplicativo.Nesta seção, você criar duas seqüências de conexão que serão usadas por fontes de dados que são definidos na seção de configuração personalizada.

Para definir seqüê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, criar os seguintes atributos e valores para uma conexão a um banco de dadosdo 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, criar 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>

Definir fontes de dados

A seção de 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 quais fonte de dados a ser usada.

  • connectionStringidentifica a cadeia de conexão criado 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 uma unidade teste.

Para 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, criar os seguintes atributos e valores para uma fonte de dadosdo Microsoft Access:

Atributo

Valores

name

"MyJetDataSource"

connectionString

"MyJetConn"

dataTableName

"MyDataTable"

dataAccessMethod

"Sequential"

Na segunda add elemento, criar os seguintes atributos e valores de uma Microsoft Excelfonte de dados:

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

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

Criar um teste de unidade usando fontes de dados definidos no App. config

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

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

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

Para criar um Microsoft fonte de dados de acesso

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

  2. Crie 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. Salvar e fechar o banco de dados.

  6. Altere a cadeia 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.

Para criar umafonte 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. Salvar e fechar a planilha.

  6. Altere a cadeia de conexão para apontar para o local da planilha.Alterar o valor de dbq para refletir o local da planilha.

Para criar uma unidade teste usando as fontes de dados do App. config

  1. Adicione uma unidade teste para oprojetode teste.

    Para mais informações, consulte Criar e executar testes de unidade para o código existente.

  2. Substitua o conteúdo gerado automaticamente da unidade de teste com o 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 de fonte de dados.Observe os nomes de configuração do arquivo app. config.

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

Testando o aplicativo

Como criar um teste de unidade orientado a dados

Outros recursos

Criar e executar testes de unidade para o código existente