Tests unitaires xUnit avec Visual Studio Team Services de projets DNX

Mar 1, 2016

Tests unitaires xUnit avec Visual Studio Team Services de projets DNX

Introduction

Avec DNX qui va bientôt passer en version finale vous allez être de plus en plus nombreux à vouloir effectuer des tests unitaires afin de vous assurer de la qualité des développements effectués.

Idéalement ces tests seront exécutés dans un processus d’intégration continue afin de s’assurer qu’il n’y a pas eu de régressions techniques, fonctionnelles et/ou de performance.

Dans le monde du .NET il existe historiquement plusieurs outils pour mettre en place cela :

  • MSTest/VSTest

  • Nunit

  • xUnit

(une liste non exhaustive https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.23 )

Dans notre cas nous avions fait le choix d’utiliser xUnit car en plus d’être largement utilisé et supporté par la communauté, c’est l’un des rares à supporter DNX.

Autre chose, vous avez dû le remarquer au travers de mes billets précédents, nous utilisons massivement l’industrie logicielle fournie par Visual Studio Team Services (VSO) avec notamment le build2015 et le release management.

Pour rappel DNX = « nouveau framework » ce qui veut dire que l’outillage doit être adapté et recompilé pour le supporter correctement.

Tests locaux et projet de tests

Après avoir suivi ce tutoriel, il nous a été possible d’écrire des tests dans un projet de librairie dnx (qui donne un nuget à la fin) et d’exécuter ces tests en local via la console (dnx test) ou bien via le test explorer.

https://asp.net-hacker.rocks/2015/12/15/unit-testing-dnx-libraries-with-xunit.html

https://xunit.github.io/docs/getting-started-dnx.html

73.png

74.png

75.png

Note vous pouvez aussi utiliser yeoman pour générer le projet de tests en tapant yo aspnet et en sélectionnant l’entrée correspondant aux tests.

Maintenant la question est la suivante : comment faire pour que VSO/VSTS exécute et rapatrie le résultat de ces tests dans les informations de build/test ?

Exécution des tests dans l’agent

La première étape c’est de demander à l’agent VSO d’exécuter les tests, pour cela rien de plus facile, il suffit d’exécuter un script powerhell.

dnx -p “.\src\BizDesk365ContentService.Tests" test -xml TestResults.xml

Le premier paramètre est le chemin relatif de mon projet de tests. Le second demande au runner dnx de xunit de produire les résultats dans un fichier xml dont nous auront besoin plus tard.

Dans mon exemple ici j’ai rajouté des lignes qui me permettent de m’assurer que dnvm, mon runtime et dnx sont bien là, mais selon votre configuration ce n’est pas forcément obligatoire.

https://gist.github.com/baywet/4daabc875cab427ef1bc

76.png

Récupération des résultats de tests

Maintenant il faut indiquer à VSTS de récupérer les résultats de tests et de les interpréter, pour cela ajouter une étape publish test results

Dans le type sélectionner xunit et indiquer l’emplacement de votre fichier de résultat.

77.png

Conclusion

Les résultats de tests remontent avec notre build dans VSTS et on peut voir qu’avec un peu de configuration et de scripts il est facile d’automatiser les tests unitaires pour des projets DNX.

Bons tests !

78.png


Edité la dernière fois le 6 Sep 2021 par Vincent


Tags: