Ejecutar todas las pruebas bajo un directorio

Resulta que la manera en que la build y Visual Studio ejecutan las pruebas, no es exactamente la misma. Esto nos lleva a que a veces, pruebas que pasan perfectamente desde Visual Studio no se ejecutan igual de bien cuando corre la build. Una manera de depurar este tipo de problemas es ejecutar estas pruebas usando MSTest.


Para esto resulta muy útil ejecutar todas las pruebas bajo un determinado directorio. Hay otros escenarios en los que esto puede ser útil. Podemos usar dos enfoques para conseguir nuestro proposito, ambos invocando MSTest, bien mediante MSBuild o bien mediante PowerShell.


Para hacerlo mediante MSBuild basta crear un fichero, llamado por ejemplo RunTestContainer.proj, con el siguiente contenido:



<Project xmlns=«http://schemas.microsoft.com/developer/msbuild/2003«>


<ItemGroup


        <TestContainers


          Include=«$(MSBuildStartupDirectory)***.test.dll«/>


    </ItemGroup>


 


    <Target Name=«RunTestContainers«>


      <Exec Command=mstest /testcontainer:»%(TestContainers.FullPath)» />


    </Target>


</Project>


Luego lo podemos ejecutar RunTestContainer.proj con MSBuild sin más: msbuild RunTestContainer.proj


Con PowerShell basta usar la siguiente linea de comandos: Get-ChildItem -filter *.test.dll -recursive | ForEach-Object { mstest /t:$_ }


En ambos casos asumo que los ficheros que contienen los test son aquellos que siguen el patrón *.test.dll y que MSTest.exe se encuentra en la variable de entorno PATH.


No deja de sorprenderme la potencia de MSBuild y de PowerShell, sobre todo la de este último.


¡Espero que os sea útil!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *