O seguinte funciona no VS2012 para projetos de teste incluídos em várias soluções sem usar um arquivo de configurações de teste:
1) Organize os arquivos e pastas que deseja implantar em uma pasta no diretório do projeto de teste.
2) Nas propriedades do projeto, crie uma etapa de pós-compilação
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
e $(TargetDir)
são macros que serão interpretadas pelo VS e devem ser incluídas como tal.
<Project_Folder_Name>
é o nome da pasta criada na etapa 1.
<Deployment_Folder_Name>
é o nome da pasta na qual os arquivos de teste serão implantados e devem ser nomeados para que sejam exclusivos quando vários projetos de teste forem implantados no mesmo diretório, por exemplo <Project_Name>_TestInputs
.
Os arquivos de teste em locais compartilhados também devem ser copiados para a pasta de implantação do diretório de destino para limitar as interações de teste. Forneça o caminho de origem em relação à $(ProjectDir)
macro. Por exemplo "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Adicione um [DeploymentItem(source, destination)]
propriedade a cada método de teste que use um arquivo de implantação (prática recomendada) ou à classe de teste (prática mais fácil para preguiçosos ou apressados e a maneira mais fácil de atualizar um projeto os caminhos relativos usados anteriormente ou um arquivo de configurações de teste )
Em um método de teste, source
é o caminho para o arquivo ou diretório usado no método de teste em relação ao diretório de destino criado pelo xcopy
e destination
é o caminho para o diretório no qual ele será criado em relação ao diretório de implantação. Para que os testes sejam executados de maneira consistente no diretório de destino ou no diretório de implantação. O caminho de destino deve ser o mesmo que o caminho de origem sem uma referência de arquivo. Exemplo: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. A DeploymentItem
deve ser incluído em cada método que usa esse arquivo ou diretório.
Em uma classe source
e destination
são o nome da pasta criada no diretório de destino peloxcopy
; isso copiará a pasta inteira para o diretório de implantação quando qualquer teste da classe for executado. Exemplo:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) Nos métodos de teste, agora você pode acessar arquivos e diretórios com confiança de que eles estarão no diretório de trabalho, independentemente de onde o Visual Studio tenha decidido colocá-lo naquele dia, por exemplo File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.