L’objectif de cette fonctionnalité est d’aider les développeurs dans leurs efforts de refactoring. Une bonne pratique avant d’en arriver au refactoring consiste à vous assurer que vous avez mis sur pied une solide couverture autour de votre test afin que les modifications apportées au code ne cassent pas le comportement de votre application. Cependant, il arrive que des efforts de refactoring se fassent sans couverture de test ou alors qu'ils soient même évités parce qu’ils sont jugés effrayant à cause de plusieurs paramètres.
C’est alors qu’entre en jeu la fonctionnalité « Smart Unit Tests » qui vous permet de faire des choses de manière intelligente et crée des tests unitaires afin de cerner le comportement actuel du code avant d’effectuer tout refactoring.
L’outil va parcourir votre code et trouver tous les chemins de code possibles puis générer des tests unitaires pour chacun des scénarios qu’il aura rencontré. Concrètement, pour chaque déclaration dans le code, une entrée de code qui l’exécutera sera générée. Une analyse de cas sera effectuée pour chacune des branches conditionnelles dans le code. Par exemple les déclarations en ‘if’ et toutes opérations pouvant renvoyer des exceptions seront analysés. Il faut savoir que cette analyse est utilisée pour générer des données de test pour un test unitaire paramétré de chacune de vos méthodes, créant des tests unitaires avec un maximum de couverture de code.
Ces tests unitaires vous permettront de voir plus facilement où effectuer des modifications pour remédier à d’éventuelles erreurs. Il est possible de sélectionner parmi les tests générés celui/ceux qui serviront à fournir une suite de régression. Pendant que vous effectuez des modifications de votre code, il faut également recommencer les Smart Unit Tests afin que les tests générés soient en phase avec les changements effectués.
Voici un petit cas pratique pour comprendre comment il fonctionne avec l’implémentation de Conway's Game of Life. Voici la méthode CellState et plus bas les résultats de cette méthode qui a conduit à 5 tests.
Pour lancer Smart Unit Test, effectuez simplement un clic droit sur la méthode ou la classe et choisissez "Smart Unit Tests"
Voici le premier test qui a été généré.
Il faut préciser que cet outil est encore en préversion. De plus, Smart Unit Tests doit être exécuté sous l'hôte Smart Device et ne pourrait pas être exécuté sous l'hôte ASP.NET.
Source : Microsoft, Blog Jeremy Bytes
Et vous ?
Qu'en pensez-vous ?