Compartilhar via


Como implantar arquivos para testes

 

Publicado: abril de 2016

Antes de executar um teste, o teste e o aplicativo precisam ser copiados para um local onde eles possam executar, 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 teste, você deve especificar que eles devem ser implantados.  

Onde os testes são executados?

O Visual Studio pode executar testes em vários lugares:

  • 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. Implantação remota é usada para teste distribuído ou aplicativos web e aplicativos 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 implantação remota, consulte Como executar um teste usando controles e agentes de teste.  

Como eu implanto arquivos de teste para um teste local?

Esta é a melhor maneira:

  1. 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 Copiar para Saída para Copiar se mais recente.  

    • Caso contrário, defina uma tarefa de 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 projeto 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 copiar ao campo Evento de pós-compilação.  

  2. Use DeploymentItemAttribute em métodos de teste ou classes de teste para especificar os arquivos e pastas que devem ser copiadas 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 você pode aplicá-lo para testar métodos ou classes de teste.

    Quando você seleciona um conjunto de testes a serem executados, todos os itens especificados em seus atributos DeploymentItem são copiados antes do início da execução.

  3. Considere a execução de seus testes de unidade no diretório de saída de compilação, de modo que os testes sejam executados mais rapidamente.  Isso é útil especialmente no servidor de compilação após a verificação 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 você quiser criar um, copie o exemplo de Configurar 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:  

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 pastas na página de 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 da 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 de assembly de teste

  • Todos os assemblies dependentes

  • Arquivos e diretórios que você especificou explicitamente, usando DeploymentItemAttribute ou em um testsettings arquivo

Pasta de implantação local para testes

Pastas de implantação para uma execução de teste local

Quando 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 mostrado.  Itens copiados posteriormente substituirão aqueles que foram copiados antes, caso tenham o mesmo nome.  

  1. Itens especificados usando DeploymentItemAttribute

  2. Dependências.  Por exemplo, arquivos de configuração de aplicativos e assemblies dependentes.  

  3. Itens especificados em uma testsettingsde arquivos, se você estiver usando um.

  4. Binários instrumentados.  Por exemplo, assemblies que foram providos 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 então instrumentados.  A instrumentação no local é a configuração padrão para testes executados localmente.  

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

Que está no diretório de 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 criado.  

    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 real de implantação, na qual assemblies e outros arquivos de implantação são copiados quando o teste começa.  

  • No.  Os resultados da cobertura de código e outros resultados do teste determinados são armazenados na pasta chamada In.  

Consulte também

DeploymentItemAttribute
Especificando configurações de teste do Visual Studio
Instrumentando e assinando assemblies novamente