Compartilhar via


Metadados do DeploymentItem

Os metadados DeploymentItem identificam as dependências de arquivo e pasta para os arquivos e pastas que são usados pelos testes durante a execução dos testes para que o Taef possa identificá-los e copiá-los adequadamente (por exemplo, em um cenário de execução entre máquinas, o Taef implantará os arquivos identificados pela propriedade DeploymentItem no computador de teste especificado).

A implementação do Taef DeploymentItem é muito semelhante à encontrada na classe DeploymentItemAttribute no VSTS.

Os metadados DeploymentItem podem ser aplicados no nível de assembly, classe ou teste. Os itens especificados pelos metadados DeploymentItem serão implantados quando a configuração correspondente (assembly, classe de teste ou teste) for executada. Se os metadados DeploymentItem especificarem uma dependência (por exemplo, um arquivo) e essa dependência já existir no destino, o TAEF fará uma comparação de CRC e só copiará o arquivo se ele tiver sido alterado. Se os metadados de DeploymentItem especificarem uma dependência e a dependência não puder ser encontrada, um erro será registrado que provocará a falha do teste (ou de todos os testes de classe de teste ou todos os testes do assembly, de acordo). O TAEF implantará arquivos apenas uma vez por assembly, classe ou teste, ou seja, a implantação não ocorrerá em cada assembly, classe ou expansão de teste se eles forem controlados por dados.

Sintaxe

[DeploymentItem("FileOrFolderToDeploy", "DestinationFolder")]

em que FileOrFolderToDeployé um arquivo ou um caminho de pasta relativo ao diretório em que a dll de teste está. Se FileOrFolderToDeploy for uma pasta, todo o conteúdo será copiado; no entanto, a pasta em si não é criada. Se houver uma hierarquia de pastas em FileOrFolderToDeploy, o Taef copiará todos esses diretórios recursivamente, mantendo sua hierarquia de diretório.

DestinationFolder é um caminho de pasta relativo ao diretório onde está a dll de teste e onde os itens de implantação são copiados. O caminho DestinationFolder pode ser especificado usando .. notação (por exemplo, ..\MyFiles).

Para implantar na pasta onde está a dll de teste, você pode omitir DestinationFolder.

[DeploymentItem("FileOrFolderToDeploy")]

Há suporte para várias partes da propriedade. Por exemplo:

[TestClass]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public class UnitTest1
{
    ...
}

Exemplos

[DeploymentItem("file1.xml")]  

As etiquetas file1.xml, que estão ao lado da dll de teste e funcionam como uma dependência. Esses metadados podem ser interpretados como se o sistema implantasse um item chamado file1.xml localizado na pasta ao lado da dll de teste no diretório dll de teste. Essa configuração só é útil para o cenário entre máquinas.

[DeploymentItem("file2.xml", "DataFiles")]

Implanta um item chamado file2.xml localizado ao lado da dll de teste no subdiretório DataFiles criado no diretório dll de teste.

[DeploymentItem("C:\\\\MyDataFiles\\\\MyDataFiles2\\\\")]  

Implanta todos os itens e diretórios encontrados no diretório C:\\MyDataFiles\\MyDataFiles2\\\. Essa configuração não cria o diretório MyDataFiles\MyDataFiles2 sob o diretório de implantação. Todos os arquivos e diretórios no MyDataFiles serão implantados para testar o diretório dll. Para copiar toda a estrutura de diretório MyDataFiles\MyDataFiles2, você deve especificar MyDataFiles\MyDataFiles2 como um diretório de saída.

[DeploymentItem("%myDir%\\myFile.txt")]

Implanta o arquivo myFile.txt se esse arquivo existir no diretório ao qual %myDir% se refere. Se o TAEF não conseguir resolver a variável de ambiente, ele gerará um erro.

Testes Gerenciados

O atributo DeploymentItem (também conhecido como DeploymentItemAttribute) pode ser aplicado a um método de teste (decorado pelo atributo [TestMethod]), à classe de teste (decorada pelo atributo [TestClass]) ou ao assembly de teste. No entanto, como o VSTS não dá suporte a essa propriedade no nível de assembly, para aplicá-la nesse nível, você precisa atribuí-la à configuração do assembly (decorada pelo atributo AssemblyInitialize):

[AssemblyInitialize]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public  static AssemblySetup(TestContext testContext)
{
    ...
}

Testes nativos

Para testes nativos, o formato de propriedade é semelhante ao formato de código gerenciado. No entanto, como as propriedades nativas têm apenas um único valor, o caminho do item e o destino opcional são especificados no valor da propriedade, separados com um caractere '>' :

BEGIN_TEST_CLASS(TestClassExample)
    TEST_CLASS_PROPERTY(L"DeploymentItem", L"C:\\Dependencies\\>Dependencies")
END_TEST_CLASS()

Testes de script

Para testes de script, o formato de propriedade é o mesmo para testes nativos:

<method name="TestOne">
    <TestMethodProperty name="DeploymentItem" value="C:\\Dependencies\\>Dependencies"/>
</method>