mardi 21 mai 2019

NUnit vs xUnit parmi les modules de Tests Unitaires lequel choisir ?

Je me rends compte que dans mon Visual Studio 2017 Community, je peux instancier les deux types de projets de Tests Unitaires, je suis surpris d'ailleurs, il n'y rien à installer pas même un package nuget ces projets sont déjà là dans mes Templates de Visual Studio.

Tout est là dans Visual Studio pour créer un projet de Tests :

Visual Studio Community .NET Core Tests Unitaires

D'ailleurs, si je prête attention, je vois en fait trois modules de Tests Unitaires. Je trouve que cela fait un peu beaucoup... Comment faire le choix du module de Tests Unitaires pour mon projet, MSTest, NUnit ou xUnit ?

Si maintenant, je fais la même chose, créer un projet de TestsU avec mon Visual Studio Community 2019 :

Visual Studio Community 2019 - Unit Test Projects

Je peux constater que les projets de Tests Unitaire se sont bien étoffés en deux ans entre 2017 et 2019. Il faut distinguer en .NET Framework et .NET Core.

Et peut être que ma question devrait être plus large : Quel module de Tests Unitaires choisir ? Je me rends rapidement compte que cette question fait rage sur Internet.

DEV - NET Core 2: Why xUnit and not NUnit or MSTest
Ils disent que xUnit est plus récent. Ils étaient avec NUnit et sont passé à xUnit car ils n'aiment pas trop l'écriture des tests avec MSTest mais ils ne connaissaient pas la V2 donc peut-être que la V2 de MSTest est meilleure.

Dans les commentaires de cet article je trouve :

.Net Core Unit Test and Code Coverage with Visual Studio Code - DEV Community
Et l'utilisation de Visual Studio Code avec un NuGet package Coverlet et de SonarQube donc finalement Unit Test en ferait plus que les autres framework de Test.

GitHub - coverlet-coverage/coverlet: Cross platform code coverage for .NET
Cross-plateforme code coverage (couveture de code)

Avec deux extensions pour Visual Studio Code :

.NET Core Test Explorer - Visual Studio Marketplace
Coverage Gutters - Visual Studio Marketplace

Sur le site de Microsoft quelques comparaisons :
MSDN - Test Experience Improvements
La comparaison chiffrée des trois frameworks xUnit, NUnit et MSTest v2, et la découverte d'une nouvelle fonctionnalité de Visual Studio, Real Time Test Discovery

MSDN - Moving to real time test discovery in Test Explorer
Là, je ne sais pas trop ce que l'on me demande, à découvrir.

Je note ce lien pour la route :
The Clean Code Blog - First-Class Tests

Une définition judicieuse de tous les types de tests que l'on peut imaginer :

  • Unit Test,
  • Acceptance Test,
  • Integration Test,
  • System Test,
  • Micro-test,
  • Functional Test 

Et c'est très intéressant. La morale à la fin de l'histoire c'est : Keep your tests clean. Treat them as first-class citizens of the system. Il est vrais que des tests qui ne sont pas remis à jour en fonction de l'évolution des spécifications, tombent en désuétude et c'est la catastrophe, il faut impérativement maintenir vos tests à jour.
 
RAYGUN - Unit testing frameworks in C#: Comparing XUnit, NUnit and Visual Studio
Là je suppose que ce qui est appelé "Visual Studio" ce sont les tests MSTests qui sont appelés : "Built-in Visual Studio testing Tools"

Je vous donne la traduction de la conclusion : En conclusion…
Quels que soient le framework de Tests Unitaires que vous utilisez, vous obtiendrez les bases. Cependant, il y a quelques différences que j'espère avoir soulignées afin que vous puissiez choisir celle qui convient à votre projet. Qu'il s'agisse de la commodité du framework de tests unitaires intégré de Microsoft, du statut solide et éprouvé de NUnit ou de la prise en charge moderne des tests unitaires fournie par XUnit, il y a toujours quelque chose qui vous donnera exactement ce dont vous avez besoin !

On peut dire qu'il ne se mouille pas trop dans un choix définitif ... Grrrrr !

Ma Conclusion sur les frameworks de Tests Unitaires

Je sens que je vais lancer avec les Tests Intégrés de Microsoft : MS Tests puisque la V2 est là et que cela semble prometteur. J'aime explorer les nouveautés.

Et en plus, j'ai trouvé un argument de poids ! Ils sont intégrés, c'est à dire que vous lisez le résultats des Tests Unitaires directement dans Visual Studio tandis avec les deux autres framework de tests vous avez les résultats dans une console ... à méditer encore. A murir sérieusement car les Tests Unitaires sont une affaire sérieuse.

N'hésitez pas à participer à laisser votre commentaire en dessous.

Have great fun with tests!

Aucun commentaire:

Enregistrer un commentaire