Eu tenho um teste que requer um arquivo XML para ser lido e depois analisado. Como posso copiar esse arquivo para a pasta de execução de teste todas as vezes?
O arquivo XML é definido como "Copiar se mais recente" e um modo de compilação "nenhum" (já que não é realmente uma coisa compilável)
visual-studio
mstest
Aaron Powell
fonte
fonte
Parece que, se você fornecer um arquivo TestSettings para a solução, poderá desmarcar a opção "Ativar implantação" e impedir que o mstest tente executar a partir da
...TestResults\...\out
pasta onde não copia seus arquivos extras (a menos que você os torne uma opção de implantação) .Isso também é útil se você depender dos arquivos extras em uma estrutura de pasta preservada porque todos os itens de implantação parecem ser copiados diretamente (simples) para a pasta de execução temporária (saída) se você usar a opção Implantação, Adicionar pasta em TestSettings ( as respostas acima sugerem que você pode manter a estrutura se adicionar cada item como seu próprio DeploymentItem).
Para mim funcionou bem executar testes diretamente no Visual Studio (ou seja, meus arquivos extras em sua estrutura foram encontrados e usados por testes) porque eu havia criado um arquivo TestSettings por outro motivo há muito tempo (que tem Ativar implantação desmarcado), mas não quando TeamCity executei o mstest para executar os testes porque não especifiquei que o arquivo TestSettings deveria ser usado.
Para criar um arquivo TestSettings no Visual Studio, clique com o botão direito na Solução e escolha Novo Item, e selecione o modelo TestSettings. Para usar o arquivo TestSettings no prompt de comando de mstest.exe, adicione a opção
/testsettings:C:\Src\mySolution\myProject\local.testsettings
(ou adicione como uma opção de linha de comando extra no TeamCity com o caminho apropriado)fonte
A resposta Preet é usada para implantar itens para um único teste. Se você quiser fazer isso no nível da solução, use as configurações .testrunconfig .
fonte
A melhor solução para mim é usar as configurações de teste, especialmente se vários testes precisarem dos mesmos arquivos de dados.
Primeiro crie um arquivo testsettings e adicione os itens de implantação necessários (nome do arquivo ou pasta):
Executando no Visual Studio, use "selecionar arquivo de configurações de teste" no menu "Testar \ Configurações de teste" para selecionar novas configurações de teste
Executando mstest, use o parâmetro / testsettings para que mstest use suas configurações de teste.
fonte
Você pode definir DeploymentItem em uma classe que contém um método com o atributo AssemblyInitialize. Então, você tem certeza de que os arquivos são copiados independentemente de qual teste você executa.Infelizmente, o atributo DeploymentItem é executado apenas em classes que contêm testes que você está executando. Portanto, se você tiver 10 classes de teste que usam o mesmo conjunto de arquivos, será necessário adicionar o atributo a todos eles.
Também descobri que as alterações nos arquivos * .testsettings não são atualizadas automaticamente no Visual Studio. Portanto, depois de adicionar arquivos / pastas na implantação em testsettings, você deve reabrir o arquivo de solução e, em seguida, executar os testes.
fonte
No Visual Studio 2012, vstest.console.exe (o executor de teste integrado) é executado com o dir de saída como o caminho atual. Isso significa que você só precisa incluir os itens em sua solução com a propriedade 'Copiar sempre' ou 'Copiar se mais recente' para que eles sejam usados em seu teste. Você não precisa do atributo DeploymentItem para o caso geral. O mesmo se aplica ao executar vstest.console.exe a partir da linha de comando dentro do diretório de saída / teste.
Existem alguns casos em que uma pasta separada é usada, um deles quando você está usando o atributo DeploymentItem. Veja aqui para mais informações.
fonte