Classe DeploymentItemAttribute

Especificar um arquivo ou pasta que devam ser implantados juntamente com os módulos (assemblies) antes de executar um teste.Esse atributo para anexar uma classe de teste ou para um método de teste.Você pode usar várias instâncias.Este atributo não é herdado.

Hierarquia de herança

System.Object
  System.Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute

Namespace:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (em Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Sintaxe

'Declaração
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
public sealed class DeploymentItemAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple = true)]
public ref class DeploymentItemAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)>]
type DeploymentItemAttribute =  
    class
        inherit Attribute
    end
public final class DeploymentItemAttribute extends Attribute

O tipo DeploymentItemAttribute expõe os membros a seguir.

Construtores

  Nome Descrição
Método público DeploymentItemAttribute(String) Especifica um item a ser implantado antes que começa de um ensaio.
Método público DeploymentItemAttribute(String, String) Especifica um item a ser implantado antes que começa de um ensaio.

Superior

Propriedades

  Nome Descrição
Propriedade pública OutputDirectory Obtém o caminho de diretório para que o item é copiado.
Propriedade pública Path Obtém o caminho do arquivo ou pasta de origem a serem copiados.
Propriedade pública TypeId Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute.)

Superior

Métodos

  Nome Descrição
Método público Equals Infraestrutura. Retorna um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute.)
Método público GetHashCode Retorna o código hash para essa instância. (Herdado de Attribute.)
Método público GetType Obtém Type da instância atual. (Herdado de Object.)
Método público IsDefaultAttribute Quando substituído em uma classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute.)
Método público Match Quando substituído em uma classe derivada, retorna um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute.)
Método público ToString Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object.)

Superior

Implementações explícitas da interface

  Nome Descrição
Implementação explícita da interfaceMétodo particular _Attribute.GetIDsOfNames Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.GetTypeInfo Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.GetTypeInfoCount Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.Invoke Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute.)

Superior

Comentários

Visual Studio 2012 realiza teste qualquer usuário na pasta em que você a criar ou em uma pasta separada de implantação que é exclusivo para o ensaio.Se uma pasta de implantação é usada, o mecanismo de teste criar uma pasta de implantação e copie nele assemblies que contêm o código de teste, o aplicativo, e todos os assemblies de referência.

Mas qualquer teste exigem arquivos adicionais, como dados de teste, arquivos de configuração, bancos de dados, ou assemblies carregados explicitamente.Para fazer esses arquivos disponíveis no teste, você deve especificar que devem ser copiados juntamente com os assemblies de teste.Aqui é a melhor maneira para fazer isso:

  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.

  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ê pode preferir não fazer isso se você deseja poder inspecione os arquivos de dados após uma falha de execução.

    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 carregamento, codificado teste de interface do usuário, e qualquer teste em que você implantar um aplicativo para computadores remotos.

Em um ensaio, todos os itens nos testes que devem ser executados são implantados antes que qualquer teste ser iniciado.

Para obter mais informações, consulte Como implantar arquivos para testes.

DeploymentItemAttribute tem dois parâmetros:

  • Caminho de item de origem é relativo à pasta de saída de compilação.Pode ser um arquivo ou pasta.Para evitar a dependência em sua estrutura de projeto, mover o item no diretório de saída de compilação como parte do processo de compilação.Use o atributo de item de implantação para implantá-lo de lá.

  • Direcionar o caminho de diretório (opcional) deve ser uma pasta, e é relativo ao diretório de implantação.Se a pasta não existir, ele será criada.O valor padrão é o diretório de implantação.

    Você não pode alterar o nome de arquivo usando DeploymentItem.

Os seguintes exemplos demonstram o uso de DeploymentItemAttribute:

  • [DeploymentItem("file1.xml")]
    Copia file1.xml do diretório de saída de compilação para o diretório de implantação.

  • [DeploymentItem(@"Testfiles\")]
    Copia todos os arquivos e pastas na pasta de Testfiles da pasta de saída de compilação para a pasta de implantação.As subpastas são replicadas na pasta de implantação.

  • [DeploymentItem("file2.xml", "DataFiles")]
    Criar uma pasta chamada DataFiles na pasta de implantação, e copia file2.xml da pasta de saída de compilação para DataFiles.

    ObservaçãoObservação

    Se você usar o segundo parâmetro, sempre deve ser o caminho de uma pasta, nunca um arquivo.Se a pasta não existir, ele será criada.Você não pode alterar o nome de arquivo usando DeploymentItem.

  • [DeploymentItem(@"Resources\file2.xml", "DataFiles")]
    Criar uma pasta chamada DataFiles na pasta de implantação se ele não existir.Copia file2.xml da pasta recursos na pasta de saída de compilação para DataFiles.Observe que a pasta recursos não está duplicada na pasta de destino.

  • [DeploymentItem(@"TestFiles\", "TestFiles")]
    Copia o conteúdo de TestFiles em uma subpasta da pasta de implantação.As subpastas são replicadas no destino.

  • [DeploymentItem(@"..\..\file1.xml")] (não recomendado)
    Copiar um item de diretório do projeto.Este exemplo assume a estrutura típica de projeto no qual o diretório de saída é, por exemplo, no diretório bin \ debug.

    Em vez de depender na estrutura de projeto dessa maneira, defina a propriedade de Copiar a saída de arquivo.Implantar o arquivo do diretório de saída de compilação.

  • [DeploymentItem(@"C:\MyDataFiles\")]
    Copia o conteúdo da pasta de MyDataFiles na pasta de implantação.

  • (Se você usar um arquivo de .testsettings ) [DeploymentItem("%myDir%\myFile.txt")]
    Implantar o arquivo myFile.txt se o arquivo existe no diretório a %myDir% que resolve.

Para obter mais informações sobre como usar atributos, consulte Estendendo metadados usando atributos.

Exemplos

O seguinte teste ler arquivos nomeados “test*.xml”.Para tornar os arquivos disponíveis para o teste e o aplicativo no teste, são identificados usando DeploymentItemAttribute.O método de teste verifique se os arquivos existe no diretório de implantação, antes de ir testar o aplicativo.

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        // Copy files from build directory:
        [DeploymentItem("test1.xml")]
        [DeploymentItem("test2.xml", "Data")]
        // Copy files from Resources subdirectory:
        [DeploymentItem("Resources\\test3.xml")]
        [DeploymentItem("Resources\\test4.xml", "Data")]

        public void ConstructorTest()
        {
            // Verify that the files exist in the deployment directory
            Assert.IsTrue(File.Exists("test1.xml"));
            Assert.IsTrue(File.Exists("Data\\test2.xml"));
            Assert.IsTrue(File.Exists("test3.xml"));
            Assert.IsTrue(File.Exists("Data\\test4.xml"));

            // Now test the application ...
        }
    }
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting

Namespace DeploymentTest
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("test1.xml")> _
        <DeploymentItem("test2.xml", "Data")> _
        <DeploymentItem("Resources\test3.xml")> _
        <DeploymentItem("Resources\test4.xml", "Data")> _
        Sub ConstructorTest()
            Assert.IsTrue(File.Exists("test1.xml"))
            Assert.IsTrue(File.Exists("Data\test2.xml"))
            Assert.IsTrue(File.Exists("test3.xml"))
            Assert.IsTrue(File.Exists("Data\test4.xml"))

            ' Now test the application ...
        End Sub
    End Class
End Namespace

Acesso thread-safe

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.VisualStudio.TestTools.UnitTesting