Dall’introduzione del Visual Studio Test Runner, estendibile con plugin, non si ha più la difficoltà di eseguire Unit Test differenti da MSTest durante una build. Tradizionalmente le difficoltà incontrate erano due
-) Eseguire i test a riga di comando con una personalizzazione della build
-) Convertire il risultato dei test nel formato MSTest affinché potesse essere incluso nel risultato di una build.
Ora che i test NUnit o xUnit possono essere eseguiti direttamente con il test runner standard, si può utilizzare l’azione di esecuzione test nella build, avendo l’accortezza di avere incluso il package Nuget per il test runner apposito nel progetto di test.
E’ sufficiente aggiungere il package Nuget del test runner ad un progetto di test ed utilizzare il task build standard Test Assemblies per eseguire gli Unit Test durante la build.
Nel nuovo TFS / VSTS, la parte di esplorazione dei risultati dei test è stata molto migliorata, ed è quindi fondamentale che il risultato degli Unit Test sia correttamente associato alla build.
Ma cosa succede se per qualsiasi ragione non sia possibile utilizzare l’azione standard di esecuzione test? Ad esempio i test potrebbero essere eseguiti in altre macchine direttamente da riga di comando con esecuzione remota, oppure i test potrebbero essere eseguiti con un framework custom.
Nel nuovo sistema di build è presente un task dedicato appositamente all’upload dei risultati di test verso VSTS / TFS, chiamato appunto Publish Test Results.
L’aspetto più interessante di questo task è che comprende molteplici formati di output, tra cui NUnit JUnit e XUNit nativo.
In questo modo, anche se avete un framework di Unit Test custom per soddisfare esigenze particolari è sufficiente ad esempio fornire un output standard di tipo NUnit (https://github.com/nunit/docs/wiki/Test-Result-XML-Format) per poterlo associare direttamente alle vostre build.
Gian Maria.