Aujourd’hui je vais vous parler de Junit 5 et plus particulièrement de la gestion des exceptions et d’une astuce qui devrait vous permettre de gagner du temps. J’ai déjà eu l’occasion de vous parler de Junit 5 dans un précédent article. Dans cet article je vous expliquais que l’on pouvait tester le lancement d’une exception avec cette syntaxe :

Throwable exception = assertThrows(BusinessLogicException.class, () -> userService.getUserDetails(1337));

assertThat(exception.getMessage(), is("Could not get user details!"));

Force est de constater que c’est un peu verbeux et à la longue ça prend du temps de recopier ces instructions à chaque fois. La solution à toute tâche répétitive est l’automatisation !

From [https://xkcd.com/974/](https://xkcd.com/974/)

From https://xkcd.com/974/

Il se trouve qu’IntelliJ possède une chouette fonctionnalité qui s’appelle les lives-templates. Pour faire court cela permet de définir un ensemble d’instructions utilisées fréquemment et de définir un raccourci afin de pouvoir les insérer plus rapidement.

Il existe une floppée de live-templates qui sont définis par défaut dans votre IDE. Pour y accéder il vous suffit d’appuyer sur les touches ⌘ + j. Ensuite vous pouvez saisir des lettres afin de rechercher le template de votre choix :

Les templates disponibles avec la lettre “s”

Les templates disponibles avec la lettre “s”

Cela permet de gagner beaucoup de temps et je vous encourage à étudier les possibilités offertes par défaut par l’IDE. Ce qui est encore plus intéressant c’est qu’il est possible de définir ses propres templates. Pour ce faire il faut se rendre dans les paramètres d’IntelliJ puis dans le menu Editor > Live Templates.

Pour ce qui est du sujet du jour nous voulons pouvoir passer de :

userService.getUserDetails(1337)

A ceci :

Throwable exception = assertThrows(BusinessLogicException.class, () -> userService.getUserDetails(1337));

assertThat(exception.getMessage(), is("Could not get user details!"));

Il vous faudra choisir la catégorie “surround” puis cliquer sur le bouton “+” à droite de la fenêtre. Renseignez ensuite la description de votre choix (ici “assertThrows”) ainsi que l’abréviation que vous souhaitez utiliser pour ce template (ici “athrows”). Prenez soin de cocher les trois cases (reformat, static imports et fully qualified names). Enfin saisissez le contenu de votre template :

Vous devriez obtenir quelque chose qui ressemble à cela :

Maintenant si vous sélectionnez le code qui doit lancer une exception dans votre test, puis que vous appuyez sur **⌘ +**⌥ + j vous devriez pouvoir utiliser le nouveau template :


J’espère que cet article vous a été utile !
N’hésitez pas à me faire part de vos commentaires ou questions en bas de cet article ou en m’envoyant un message sur LinkedIn :
http://www.linkedin.com/in/jbleduigou/en.
Cet article a initialement été publié sur Medium.