Metadados deploymentItem
Os metadados DeploymentItem identificam as dependências de arquivos e pastas 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 computadores, o Taef implantará os arquivos identificados pela propriedade DeploymentItem no computador de teste especificado).
A implementação de DeploymentItem do Taef é 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 pelas execuções de configuração correspondente de tempo (assembly, classe de teste ou teste). 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 DeploymentItem especificarem uma dependência e a dependência não puder ser encontrada, será registrado um erro que falhará no teste (ou em todos os testes de classe de teste ou 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 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órios.
DestinationFolder é um caminho de pasta relativo ao diretório em que a dll de teste está 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 marcas file1.xml que estão localizadas ao lado da dll de teste 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 para o diretório dll de teste. Essa configuração só é útil para cenários 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 em MyDataFiles serão implantados para testar o diretório dll. Para copiar toda a estrutura de diretórios 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% resolve. Se o TAEF não puder resolve 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 assembly de teste. No entanto, como o VSTS não dá suporte a essa propriedade no nível do assembly, para aplicar essa propriedade no nível do assembly, você precisa aplicá-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 da 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 por 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>