quarta-feira, 27 de abril de 2011

Como usar arquivos de teste durante testes unitários no VS 2010

Estamos testando a importação de arquivos de NFe's (Notas Fiscais Eletrônicas). Para construir testes que façam isto, precisei de um arquivo contendo uma NFe, e também dos XSD's pra validação do XML da NFe.

Quando você executa testes dentro do VS, ele cria um diretório chamado "TestResults" debaixo do diretório da sua solução, e pra cada execução de um teste, cria um subdiretório chamado "usuário_máquina AAAA-MM-DD hh_mm_ss", e dentro desse subdiretório cria um outro chamado Out, e é dentro desse Out que ficam os assemblies com o código do seu teste e o código a testar. Então qualquer arquivo que seja necessário durante os testes tem que ser copiados para este diretório.


Estrutura dos diretórios de execução dos testes, com os arquivos de testes já copiados para lá.

Achei algumas formas de fazer isso (Test > Edit Test Settings > blablabla.testsettings, opção Deployment; ou  [Propriedades do Arquivo] > Build Action = Content e Copy To Output Directory = Copy Always), mas a única coisa que funcionou mesmo foi o uso do atributo [DeploymentItem]:


Como usei em um método de teste, os arquivos só são copiados para o diretório de execução dos testes quando este método rodar. Mas pelo Help da MSDN, ele pode ser usado também em classes, o que (suponho) faz com que os arquivos sejam copiados para o diretório de execução para qualquer teste da classe.