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 | |
---|---|---|
![]() |
DeploymentItemAttribute(String) | Especifica um item a ser implantado antes que começa de um ensaio. |
![]() |
DeploymentItemAttribute(String, String) | Especifica um item a ser implantado antes que começa de um ensaio. |
Superior
Propriedades
Nome | Descrição | |
---|---|---|
![]() |
OutputDirectory | Obtém o caminho de diretório para que o item é copiado. |
![]() |
Path | Obtém o caminho do arquivo ou pasta de origem a serem copiados. |
![]() |
TypeId | Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute.) |
Superior
Métodos
Nome | Descrição | |
---|---|---|
![]() |
Equals | Infraestrutura. Retorna um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute.) |
![]() |
GetHashCode | Retorna o código hash para essa instância. (Herdado de Attribute.) |
![]() |
GetType | Obtém Type da instância atual. (Herdado de Object.) |
![]() |
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.) |
![]() |
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.) |
![]() |
ToString | Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object.) |
Superior
Implementações explícitas da interface
Nome | Descrição | |
---|---|---|
![]() ![]() |
_Attribute.GetIDsOfNames | Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute.) |
![]() ![]() |
_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.) |
![]() ![]() |
_Attribute.GetTypeInfoCount | Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute.) |
![]() ![]() |
_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:
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 .
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.
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çã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.