Como implantar arquivos para testes

Antes de executar um teste, o teste e o aplicativo tem que ser copiados para um local onde ele pode executar, junto com outros assemblies que referencia.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 fazer esses arquivos adicionais disponíveis para teste, você deve especificar que devem ser implantados.

Onde os testes executam?

O Visual Studio 2012 pode executar um teste em vários locais:

Como eu implanto arquivos de teste para um teste local?

Aqui é a melhor maneira:

  1. Copiar os arquivos para o diretório de destino de compilação como parte do processo de compilação.

    • Se são específicos para um projeto de teste, inclua-os como arquivos de conteúdo no projeto de teste do Visual Studio.Selecione no solution Explorer e defina a propriedade de Copiar a saída para Copiar se mais recente.

    • Caso contrário, defina uma tarefa post-build 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 de Compilar Eventos .Em um projeto Visual Basic, abra a página de Compilar e escolha Compilar Eventos.Adicione o comando de impressão para o campo de Evento de Pós-compilação .

  2. Use DeploymentItemAttribute em métodos de teste ou teste classes 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
    
    • origem é um arquivo ou diretório para copiar.O caminho absoluto, ou pode ser relativo ao diretório de saída de compilação.

    • targetFolder é opcional.É o diretório em que o conteúdo do arquivo de origem ou de diretório serão copiados.O caminho absoluto, ou pode ser relativo ao diretório de implantação.O valor padrão é “. ”, o diretório de implantação.

      ObservaçãoObservação

      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 tantas vezes quantas quiser, e você pode aplicá-lo para testar métodos ou teste classes.

    Quando você seleciona um conjunto de teste para executar, todos os itens especificados em seus atributos de DeploymentItem são copiados antes que inicia o ensaio.

  3. Considere executar seus testes de unidade diretamente no diretório de saída de compilação, de modo que testando seja executado mais rapidamente.Isso é especialmente útil no servidor de compilação depois que você fizer o check-in dos testes.

    Para fazer isso, adicione um arquivo de .runsettings a sua solução, incluindo <DeploymentEnabled>False</DeploymentEnabled>, e selecione o arquivo Testar, no menu de Configurações de Teste .O mesmo efeito ocorrer em qualquer ensaio em DeploymentItemAttribute que não seja usado de qualquer.

    No entanto, você não pode evitar usar uma pasta de implantação se você estiver usando um arquivo de .testsettings , que é necessário para Web e teste de carga, codificado teste de interface do usuário, e qualquer teste em que você implantar um aplicativo para computadores remotos.

Quando devo poderia usar um arquivo de .testsettings?

Você não precisa de um arquivo de .testsettings para teste lisos da unidade.Se você não requer um arquivo de .testsettings, não use um.Torna a unidade testes executar mais lentamente, e é incompatível com estruturas de terceiros de teste.Considere as outras maneiras de implantação em vez disso.

Você requer um arquivo de .testsettings se qualquer uma dessas instruções são verdadeiras:

Se você usar um arquivo de .testsettings, os assemblies do aplicativo e de teste sempre serão 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.Serão copiados para a pasta de implantação antes de cada ensaio.Os caminhos de itens especificados nesta página são sempre relativo ao diretório de solução, e sempre são implantados para a pasta de implantação ao lado do aplicativo e testam assemblies.

Se você desejar usar caminhos absolutos ou para especificar um diretório diferente de destino, abra o arquivo de .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 relativo ou absoluto para o 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 é criada em TestResults na sua pasta de solução.

Uma pasta separada de implantação é usada se nenhum dos métodos ou de classes de teste em um ensaio têm o atributo de DeploymentItem, ou se você usar um arquivo de .testsettings .

Se uma pasta de implantação é usada, os seguintes arquivos e pastas são copiados para a pasta de implantação os testes antes que eles sejam executados:

  • O arquivo do assembly de teste

  • Todos os assemblies dependentes

  • Arquivos e pastas que você especificou explicitamente, usando DeploymentItemAttribute ou em um arquivo de .testsettings

Pastas de implantação para um local ensaio

Pasta de implantação local para testes

Quando arquivos são implantados em sequência e que?

Em um ensaio, todos os arquivos a serem implantados são copiados antes que qualquer início de teste.Um ensaio é um lote de teste iniciados por um único comando ou por um evento agendada.Isso significa que se você especificar um arquivo de dados a ser implantado para um método específico de teste, também estará disponível para todos os outros teste que é executado na mesma execução.

Os seguintes itens são copiados, na ordem mostrado.Itens que são copiados posteriormente substituirão aqueles que foram anteriormente copiado, se eles tiverem 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 de .testsettings, se você estiver usando um.

  4. Binários providos.Por exemplo, módulos (assemblies) que foram providos para ativar a tinta ou o IntelliTrace de código.

    Se você estiver usando instrumentação no lugar, os binários são providos primeiro e copiados para o diretório de implantação; caso contrário, são copiados primeiro e providos em.A instrumentação no local é a configuração padrão para os testes que são executados localmente.

  5. O arquivo ou arquivos que compõem o teste.Esses incluem conjuntos de teste, porque os testes de unidade; texto ou arquivos de .mht, para teste manuais; ou outros tipos de arquivos para outros tipos de teste, como testes genéricos.

Que está no diretório de TestResults?

  • Pasta de ensaio.TestResults contém uma pasta para cada ensaio que iniciou.Seu nome inclui o momento que foi criado.

    Se você especificar a configuração e scripts de limpeza em um .testsettings arquivos, a pasta de ensaio contém os scripts.

  • Out.Cada pasta de ensaio contém uma pasta chamada para fora.A pasta de saída é a pasta de implantação real, que assemblies e outros arquivos de implantação são copiados quando o ensaio começa.

  • Em.Os resultados da tinta e determinados outros resultados de teste são armazenados na pasta chamada em.

Consulte também

Referência

DeploymentItemAttribute

Conceitos

Instrumentação e renovando a assinatura de Assemblies

Outros recursos

Especificando configurações de teste do Visual Studio