Instruções passo a passo: usando um arquivo de configuração para definir uma fonte de dados
Este passo a passo ilustra como usar uma fonte de dados definida em um arquivo app.config para testes de unidade.Você aprenderá como criar um arquivo app.config que define uma fonte de dados que pode ser usada pela classe de DataSourceAttribute .As tarefas apresentadas neste passo a passo incluem o seguinte:
Criando um arquivo app.config.
Definindo uma seção de configuração personalizada.
Definindo cadeias de conexão.
Definindo as fontes de dados.
Para acessar fontes de dados usando a classe de DataSourceAttribute .
Pré-requisitos
Para concluir esta explicação passo a passo, será necessário:
Visual Studio Premium ou Visual Studio Ultimate
O Microsoft Access ou o Microsoft Excel para fornecer os dados no mínimo um dos métodos de teste.
Uma solução de Visual Studio 2012 que contém um projeto de teste.
Crie o arquivo App.config
Para adicionar um arquivo app.config ao projeto
Se seu projeto de teste já tiver um arquivo app.config, vá para Defina uma seção de configuração personalizada.
Clique com o botão direito do mouse no projeto de teste em Gerenciador de Soluções, aponte para Adicionar, e clique em Novo Item.
A janela de Adicionar novo item é aberta.
Selecione o modelo de Arquivo de Configuração do Aplicativo e clique Adicionar.
Defina uma seção de configuração personalizada
Examine o arquivo app.config.Contém pelo menos a declaração XML e um elemento raiz.
Para adicionar a seção de configuração personalizada para o arquivo app.config
O elemento raiz de app.config deve ser o elemento de configuration .Crie um elemento de configSections dentro do elemento de configuration .configSections deve ser o primeiro elemento no arquivo app.config.
Dentro do elemento de configSections , crie um elemento de section .
No elemento de section , adicione um atributo chamado name e atribua a ela um valor igual ao microsoft.visualstudio.testtools.Adicionar outro atributo chamado type e atribua a ela um valor igual ao Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
O elemento de section deve ser semelhante a:
<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ção |
---|
O nome do assembly deve corresponder à compilação do Microsoft Visual Studio .NET Framework que você está usando.Definir a versão 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 8.0.0.0. |
Defina cadeias de conexão
As cadeias de conexão definem as informações específicas do provedor para acessar fontes de dados.As cadeias de conexão definidas nos arquivos de configuração fornece informações reutilizável do provedor de dados por meio de um aplicativo.Nesta seção, você cria duas cadeias de conexão que serão usadas pela fontes de dados definidas na seção de configuração personalizada.
Para definir cadeias de conexão
Depois do elemento de configSections , crie um elemento de connectionStrings .
Dentro do elemento de connectionStrings , crie dois elementos de add .
No primeiro elemento de add , crie os seguintes atributos e valores para uma conexão a um base 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" |
No segundo elemento de add , crie os seguintes atributos e valores para uma conexão a 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 elemento de connectionStrings deve ser semelhante a:
<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.
name define a identidade usada por DataSourceAttribute para especificar que a fonte de dados a ser usado.
connectionString identifica a cadeia de conexão criada em anterior define a seção de cadeias de conexão.
dataTableName define a tabela ou a planilha que contém os dados a serem usados no teste.
dataAccessMethod define a técnica para acessar valores de dados na fonte de dados.
Nesta seção, você definirá duas fontes de dados para usar em um teste da unidade.
Para definir fontes de dados
Depois do elemento de connectionStrings , crie um elemento de microsoft.visualstudio.testtools .Esta seção foi criada em define uma seção de configuração personalizada.
Dentro do elemento de microsoft.visualstudio.testtools , crie um elemento de dataSources .
Dentro do elemento de dataSources , crie dois elementos de add .
No primeiro elemento de add , crie os seguintes atributos e valores para uma fonte de dados do Microsoft Access:
Atributo |
Valores |
---|---|
name |
"MyJetDataSource" |
connectionString |
"MyJetConn" |
dataTableName |
"MyDataTable" |
dataAccessMethod |
"Sequential" |
No segundo elemento de add , crie os seguintes atributos e valores para uma fonte de dados do Microsoft Excel:
Name |
"MyExcelDataSource" |
connectionString |
"MyExcelConn" |
dataTableName |
"Sheet1$" |
dataAccessMethod |
"Sequential" |
O elemento de microsoft.visualstudio.testtools deve ser semelhante a:
<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 ser semelhante a:
<?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 as fontes de dados definidas em app.config
Agora que um arquivo app.config foi definido, você criará um teste de unidade que usa os dados encontrados em fontes de dados definidas no arquivo app.config.Nesta seção, nós:
Crie as fontes de dados encontrado no arquivo app.config.
Use as fontes de dados em dois métodos de teste que compara valores em cada fonte de dados.
Para criar uma fonte de dados do Microsoft Access
Crie uma base de dados do Microsoft Access nomeado testdatasource.accdb.
Crie uma tabela e denomine-a MyDataTable em testdatasource.accdb.
Crie dois campos em MyDataTable denominada Arg1 e Arg2 usando o tipo de dados de Number .
Adicionar cinco entidades a MyDataTable com os seguintes valores para Arg1 e Arg2, respectivamente: (10,50), (3,2), (6,0), (0,8) e (12312,1000).
Salvar e fechar o base de dados.
Altere a cadeia de conexão para indicar o local da base de dados.Altere o valor de Data Source para refletir o local do base de dados.
Para criar uma fonte de dados do Microsoft Excel
Criar uma planilha do Microsoft Excel data.xlsxnomeada.
Criar uma planilha denominada Sheet1 se já não existe em data.xlsx.
Crie dois cabeçalhos de coluna e nomeie-os Val1 e Val2 em Sheet1.
Adicionar cinco entidades a Sheet1 com os seguintes valores para Val1 e Val2, respectivamente: (1,1), (2,2), (3,3), (4,4) e (5,0).
Salvar e fechar a planilha.
Altere a cadeia de conexão para indicar o local da planilha.Altere o valor de dbq para refletir o local da planilha.
Para criar uma unidade teste usando as fontes de dados de app.config
Adicionar um teste de unidade para o projeto de teste.
Para obter mais informações, consulte Criar e executar testes de unidade para o código existente.
Substitua o conteúdo gerados automaticamente de teste da unidade 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"]); } } }
Examine os atributos da fonte de dados.Observe os nomes de configuração do arquivo app.config.
Criar sua solução e MyTestMethod executado e teste MyTestMethod2.
Importante |
---|
Implantar itens como fontes de dados para que sejam acessíveis ao teste no diretório de implantação. |
Consulte também
Conceitos
Verificando código usando testes de unidade
Como criar um teste de unidade orientado a dados