Como implantar arquivos para testes
Antes de executar um teste, o teste e o aplicativo precisam ser copiados para um local onde eles possam ser executados, junto com outros assemblies aos quais fazem referência. Um teste normalmente também requer arquivos adicionais, como dados de teste, arquivos de configuração, um banco de dados e assemblies carregados explicitamente. Para tornar esses arquivos adicionais disponíveis para o teste, você deve especificar que eles devem ser implantados.
Onde os testes são executados?
O Visual Studio 2013 pode executar testes em vários locais:
Na pasta de saída de compilação, geralmente <seu projeto>\bin\Debug.
Em uma pasta de implantação de teste local no mesmo computador da compilação.
Em um computador remoto. A implantação remota é usada para testar aplicativos distribuídos ou da Web, que devem ser executados em uma plataforma específica. Para implantação remota, você deve configurar umcontrolador de teste e agentes de teste e, geralmente, executar os testes em um ambiente de laboratório. Para obter mais informações sobre a implantação remota, consulte Como executar um teste usando controles e agentes de teste.
Como eu implantar arquivos de teste para um teste local?
Esta é a melhor maneira:
Copie os arquivos para o diretório de destino de compilação como parte do processo de compilação.
Se forem específicos de um projeto de teste, inclua-os como arquivos de conteúdo no projeto de teste do Visual Studio. Selecione-os no Gerenciador de Soluções e defina a propriedade de Copiar para Saída para Copiar se for mais novo.
Caso contrário, defina uma tarefa pós-compilação para copiar os arquivos no diretório de saída de compilação. Por exemplo:
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
Abra as propriedades do seu projeto de teste. Em um projeto C#, abra a página Compilar Eventos. Em um projeto do Visual Basic, abra a página Compilar e escolha Compilar Eventos. Adicione o comando de cópia ao campo Evento Pós-Compilação.
Use DeploymentItemAttribute em métodos de teste ou classes de teste para especificar os arquivos e pastas que devem ser copiados do diretório de saída de compilação para o diretório de implantação.
[TestClass] class TestClass1 { [TestMethod] [DeploymentItem("source", "targetFolder")] public void Test1() { string testData = System.IO.File.ReadAllText(@"targetFolder\source"); ... } }
<TestClass()> _ Public Class UnitTest1 <TestMethod()> _ <DeploymentItem("source", "targetFolder")> _ Sub TestMethod1() Dim testData As String = _ System.IO.File.ReadAllText(@"targetFolder\source") ... End Sub End Class
fonte é um arquivo ou diretório a ser copiado. O caminho pode ser absoluto ou relativo ao diretório de saída da compilação.
targetFolder é opcional. É o diretório em que o conteúdo do arquivo de origem ou do diretório será copiado. O caminho pode ser absoluto ou relativo ao diretório de implantação. O valor padrão é ".", o diretório de implantação.
Dica
targetFolder é sempre um diretório, nunca um caminho de arquivo.Você não pode alterar o nome de arquivo usando DeploymentItem.
Você pode usar o atributo quantas vezes quiser, e pode aplicá-lo a métodos de teste ou a classes de teste.
Ao selecionar um conjunto de testes para execução, todos os itens especificados em seus atributos DeploymentItem são copiados antes do início da execução.
Considere a execução de seus testes de unidade no diretório de saída de compilação, para que os testes sejam executados mais rapidamente. Isso é útil especialmente no servidor de compilação após o check-in dos testes.
Para fazer isso, adicione um arquivo *.runsettings à solução, inclua <DeploymentEnabled>False</DeploymentEnabled> e selecione o arquivo no menu Testar, Configurações de Teste. O mesmo efeito ocorre em qualquer teste em que DeploymentItemAttribute não é usado.
No entanto, você não pode evitar o uso de uma pasta de implantação se estiver usando um arquivo .testsettings, que é necessário para testes da Web e de carga, testes de IU codificados e qualquer teste em que um aplicativo for implantado em computadores remotos.
O que é um arquivo *.runsettings?
Um arquivo com qualquer nome e extensão de nome de arquivo '.runsettings'. É utilizado para configurar testes de unidade para algumas finalidades. Se desejar criar um, copie o exemplo de Configurando testes de unidade usando um arquivo .runsettings. Coloque-o em uma pasta de soluções, em seguida, ative-o usando o menu Testar>Configurações de Teste.
Quando devo usar um arquivo .testsettings?
Um arquivo *.testsettings (ou seja, um arquivo com qualquer nome e extensão de nome de arquivo '.testsettings') é uma alternativa mais antiga para *.runsettings. Se desejar criar um, use o item de menu no menu Testar>Configurações de Teste. Salve o arquivo em uma pasta de soluções e ative-o usando o menu Testar>Configurações de Teste.
Evite usar um arquivo *.testsettings se puder, porque ele torna a execução de testes mais lenta e é incompatível com estruturas de teste de terceiros. Não é necessário para testes de unidade de plano. Mas é necessário em um destes casos:
Você está executando testes de carga e desempenho na Web ou testes de IU codificados
Você está executando testes de um aplicativo distribuído em mais de um computador
Você deseja coletar dados de diagnóstico adicionais de seus testes
Se você usar um arquivo *.testsettings, os assemblies do aplicativo e de teste serão sempre copiados para uma pasta de implantação.
Você pode especificar arquivos de dados e diretórios na página Implantação do editor de .testsettings. Eles serão copiados para a pasta de implantação antes de cada execução de teste. Os caminhos de item especificados nesta página sempre serão relativos ao diretório da solução e sempre serão implantados na pasta de implantação ao lado do aplicativo e dos assemblies de teste.
Se desejar usar caminhos absolutos ou especificar um diretório de destino diferente, abra o arquivo .testsettings com o editor XML e insira um fragmento semelhante a este:
<Deployment>
<DeploymentItem filename="C:\MyTestData\TestData.mdb"
outputDirectory="D:\TestDB\" />
</Deployment>
outputDirectory pode ser absoluto ou relativo ao diretório de implantação.
Quando uma pasta separada de implantação é usada?
Se você executar testes usando o Visual Studio, a pasta de implantação será criada em TestResults na sua pasta de solução.
Uma pasta de implantação separada será usada se qualquer um dos métodos ou classes de teste em uma execução de teste tiver o atributo DeploymentItem, ou se você usar um arquivo *.testsettings.
Se uma pasta de implantação for usada, os arquivos e pastas a seguir serão copiados para a pasta de implantação antes da execução dos testes:
O arquivo do assembly de teste
Todos os assemblies dependentes
Arquivos e diretórios que você especificou explicitamente, usando DeploymentItemAttribute ou em um arquivo *.testsettings
Pastas de implantação para uma execução de teste local
Quando os arquivos são implantados e em qual sequência?
Em uma execução de teste, todos os arquivos a serem implantados são copiados antes de qualquer teste iniciar. Execução de teste é um lote de testes iniciados por um único comando ou por um evento agendado. Isso significa que se você especificar um arquivo de dados a ser implantado para um método de teste específico, ele também estará disponível para todos os outros testes que são realizados na mesma execução.
Os itens a seguir são copiados na ordem mostrada. Itens copiados posteriormente substituirão aqueles que foram copiados antes, caso tenham o mesmo nome.
Itens especificados usando DeploymentItemAttribute
Dependências. Por exemplo, arquivos de configuração de aplicativos e assemblies dependentes.
Itens especificados em um arquivo *.testsettings, caso esteja usando um.
Binários instrumentados. Por exemplo, assemblies que foram instrumentados para habilitar a cobertura de código ou o IntelliTrace.
Se você estiver usando a instrumentação no local, os binários serão instrumentados primeiro e copiados para o diretório de implantação; caso contrário, serão copiados primeiro e depois instrumentados. A instrumentação no local é a configuração padrão para testes executados localmente.
O arquivo ou os arquivos que compõem o teste. Esses incluem assemblies de teste, para testes de unidade; arquivos de texto ou .mht para testes manuais; ou outros tipos de arquivos para outros tipos de teste, como testes genéricos.
O que há no diretório TestResults?
Pasta de execução de teste. TestResults contém uma pasta para cada execução de teste iniciada. Seu nome inclui a hora em que foi criada.
Se especificar scripts de configuração e de limpeza em um arquivo *.testsettings, a pasta de execução do teste conterá os scripts.
Out. Cada pasta de execução de teste contém uma pasta chamada Out. A pasta Out é a pasta de implantação real, na qual assemblies e outros arquivos de implantação são copiados quando o teste começa.
In. Os resultados da cobertura de código e outros resultados de teste determinados são armazenados na pasta chamada In.
Consulte também
Referência
Conceitos
Instrumentando e assinando assemblies novamente