Dica: MSTest (/noisolation e arquivos de configuração)

quinta-feira, 18 de setembro de 2008.

(Comente)


Passei duas manhãs tentando resolver um problema na análise de cobertura de código, provocado por uma modificação em nossa arquitetura aqui no projeto.

Usamos o VS 2008 para a implementação dos testes unitários/integração, este projeto encontra-se em uma solução diferente da solução de desenvolvimento, como trabalhamos manipulando vários arquivos, meus testes sempre se perdiam quando os desenvolvedores chamavam alguns métodos do framework do VS que informava o caminho dos arquivos a serem manipulados pela aplicação.

Bolamos uma solução para isso, e para tal, foi necessário a inclusão de um arquivo de configuração no projeto de testes, onde neste arquivo eu informava ao VS qual o caminho dos templates, arquivos de configuração, etc.

Bem, tudo aconteceu muito eficientemente, até o dia que tive que coletar a cobertura dos meus testes, pelo NCover.

Agora foi a vez do MStest se perder nos caminhos dos arquivos de configuração, templates, etc. … mas a solução para isso foi facilmente encontrada nos forums do msdn.

Seria necessário, indicar para o mstest a localização do arquivo .testrunconfig e rodar o MStest no mesmo diretório em que se encontra o seu arquivo de configuração (.config)


/testcontainer:<test.dll> /runconfig:<arquivodeconfiguração>.testrunconfig

Feito isso, tudo roda tranquilamente.

No entanto, para rodar os testes pelo NCover preciso usar o /noisolation e esse é o problema, pois existe uma “combinação maldita” nesse cenário. :)

Quando rodamos os testes pelo mstest usando o /noisolation e mais um arquivo de configuração (/runconfig:<arquivodeconfiguração>.testrunconfig), precisamos realizar algumas alterações no arquivo de configuração do mstest para que tudo funcione corretamente.

A razão pelo qual isso faz-se necessário, é porque quando indicamos o /noisolation o VS roda os testes baseado no processo do MSTest.exe e não pelo VSTestHost.exe (utilizado ao rodar os testes pelo IDE do VS), desta forma quando fazemos isto, temos que alterar também o arquivo MSTest.exe.config localizado geralmente em C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE.

Meu arquivo originalmente contêm as linhas


<?xml version ="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="PrivateAssemblies;PublicAssemblies"/>
</assemblyBinding>
</runtime>
</configuration>

Mas tive que realizar algumas alterações e inclui as mesmas linhas contidas no meu arquivo de configuração (.config).

Feito isso, tudo funcionou perfeitamente.

Bem, como passei um bom tempo (duas manhãs) para resolver este problema, simplesmente porque não achei nada em forums que respondesse minha questão, estou relatando isto aqui no blog para ajudar alguem que possa estar passando pelo mesmo problema. ;)


    


Gostou? assine o feed | Discordou? opine! ou entre em contato



Opine!




Caso possua um site, preencha este campo que ele sera exibido na pagina inicial na aba "+ leitores".

Clique nos smileys abaixo para adicionar ao seu texto.

≈down≈ :/ :) ≈angel≈ :( ≈eek≈ ≈!≈ ≈shock≈ ≈mad≈ ≈mrgreen≈ ≈XO≈ ≈vangry≈ :D ≈neutral≈ ::15 ≈roll≈ ≈twisted≈ ≈halo≈ ≈???≈ ≈cool≈ ;) ≈cry≈ ≈oops≈ ≈kiss≈ ≈$≈ :P ≈pirate≈ ≈up≈