Partilhar via


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:

Como eu implantar 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 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.

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

  3. 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:

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

Pasta de implantação local para testes

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.

  1. Itens especificados usando DeploymentItemAttribute

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

  3. Itens especificados em um arquivo *.testsettings, caso esteja usando um.

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

  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.

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

DeploymentItemAttribute

Conceitos

Instrumentando e assinando assemblies novamente

Outros recursos

Especificando configurações de teste do Visual Studio