Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este passo a passo ilustra como usar uma fonte de dados definida 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 usada pela classe DataSourceAttribute. As tarefas apresentadas neste passo a passo incluem o seguinte:
Criando um arquivo app.config.
Definindo uma seção de configuração personalizada.
Definição de cadeias de conexão.
Definição das fontes de dados.
Acessando as fontes de dados usando a classe DataSourceAttribute.
Observação
Atualmente, DataSourceAttribute é suportado apenas no .NET Framework.
Pré-requisitos
Para concluir este passo a passo, você precisa:
Visual Studio Enterprise
Microsoft Access ou Microsoft Excel para fornecer dados para pelo menos um dos métodos de teste.
Uma solução do Visual Studio que contém um projeto de teste.
Adicionar um arquivo de app.config ao projeto
Se o seu projeto de teste já tiver um arquivo app.config, vá para Definir uma seção de configuração personalizada.
Clique com o botão direito do mouse em seu projeto de teste no Gerenciador de Soluções e selecione Adicionar>Novo Item.
A janela Adicionar Novo Item é aberta. Se não vir todos os modelos de item, escolha Mostrar Todos os Modelose, em seguida, escolha o modelo de item.
Selecione o modelo Arquivo de Configuração do Aplicativo e clique em Adicionar.
Definir 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.
Para adicionar a seção de configuração personalizada ao arquivo app.config
O elemento raiz de app.config deve ser o elemento de configuração . Crie um elemento configSections dentro do elemento de de configuração. O configSections deve ser o primeiro elemento no ficheiro app.config.
Dentro do elemento configSections, crie um elemento seção.
Na seção elemento, adicione um atributo chamado
namee atribua-lhe um valor demicrosoft.visualstudio.testtools. Adicione outro atributo chamadotypee atribua-lhe um valor deMicrosoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.
O elemento da seção deve ser semelhante a este:
<section name="microsoft.visualstudio.testtools" type="Microsoft.VisualStudio.TestTools.UnitTesting.TestConfigurationSection, Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions" />
Observação
O nome do assembly deve corresponder à versão que você está usando.
Definir cadeias de conexão
As cadeias de conexão definem informações específicas do provedor para acessar fontes de dados. As cadeias de conexão definidas em arquivos de configuração fornecem informações reutilizáveis do provedor de dados em um aplicativo. Nesta seção, você cria duas cadeias de conexão que serão usadas por fontes de dados definidas na Seção Configuração Personalizada.
Atenção
A cadeia de conexão pode conter dados confidenciais (por exemplo, uma senha). A cadeia de conexão é armazenada em texto simples no código-fonte e no assembly compilado. Restrinja o acesso ao código-fonte e ao assembly para proteger essas informações confidenciais.
Para definir cadeias de conexão
Depois do elemento configSections, crie um elemento connectionStrings.
Dentro do elemento connectionStrings, crie dois elementos adicionar.
No primeiro elemento a adicionar, crie os seguintes atributos e valores para uma conexão com uma base de dados 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 adicionado ao, crie os seguintes atributos e valores para uma conexão com uma folha de cálculo do Microsoft Excel:
| Atributo | Valores |
|---|---|
name |
"MyExcelConn" |
connectionString |
"Dsn=Excel Files;dbq=data.xlsx;defaultdir=.\; driverid=790;maxbuffersize=2048;pagetimeout=5" |
providerName |
"System.Data.Odbc" |
O elemento connectionStrings deve ser semelhante a este:
<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 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 usar.connectionStringidentifica a cadeia de conexão criada na seção anterior Definir cadeias de conexão.dataTableNamedefine a tabela ou folha 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ê definirá duas fontes de dados para usar em um teste de unidade.
Para definir fontes de dados
Depois do elemento connectionStrings, crie um elemento microsoft.visualstudio.testtools. Esta seção foi criada em Definir uma seção de configuração personalizada.
Dentro do elemento microsoft.visualstudio.testtools, crie um elemento dataSources.
Dentro do elemento dataSources, crie dois elementos adicione.
No primeiro elemento adicionar, 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 adicionado, crie os seguintes atributos e valores para uma fonte de dados da Microsoft Excel:
| Atributo | Valores |
|---|---|
Name |
"MyExcelDataSource" |
connectionString |
"MyExcelConn" |
dataTableName |
"Sheet1$" |
dataAccessMethod |
"Sequential" |
O elemento microsoft.visualstudio.testtools deve ser semelhante a este:
<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 de app.config final deve ser 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.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>
Criar um teste de unidade que usa fontes de dados definidas no app.config
Agora que um arquivo app.config foi definido, você criará um teste de unidade que usa dados localizados nas fontes de dados definidas no arquivo app.config. Nesta secção, iremos:
Crie as 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 uma fonte de dados do Microsoft Access
Crie um banco de dados do Microsoft Access chamado testdatasource.accdb.
Crie uma tabela e nomeie-a
MyDataTableem testdatasource.accdb.Crie dois campos em
MyDataTablenomeadosArg1eArg2usando o tipo de dadosNumber.Adicione cinco entidades a
MyDataTablecom os seguintes valores paraArg1eArg2, respetivamente: (10,50), (3,2), (6,0), (0,8) e (12312,1000).Salve e feche o banco de dados.
Altere a cadeia de conexão para apontar para o local do banco de dados. Altere o valor de
Data Sourcepara refletir o local do banco de dados.
Para criar uma fonte de dados do Microsoft Excel
Crie uma planilha do Microsoft Excel chamada data.xlsx.
Crie uma planilha chamada
Sheet1se ela ainda não existir no data.xlsx.Crie dois cabeçalhos de coluna e nomeie-os
Val1eVal2emSheet1.Adicione cinco entidades a
Sheet1com os seguintes valores paraVal1eVal2, respetivamente: (1,1), (2,2), (3,3), (4,4) e (5,0).Salve e feche a planilha.
Altere a cadeia de conexão para apontar para o local da planilha. Altere o valor de
dbqpara refletir o local da planilha.
Para criar um teste de unidade usando as fontes de dados app.config
Adicione um teste de unidade ao projeto de teste.
Substitua o conteúdo gerado 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"]); } } }Examine os atributos DataSource. Observe os nomes de configuração do arquivo app.config.
Crie sua solução e execute os testes MyTestMethod e MyTestMethod2.
Importante
Implante itens como fontes de dados para que eles sejam acessíveis ao teste no diretório de implantação.