Changement de vocabulaire grâce à Midje pour Clojure

Un framework de test pour Clojure, midje, apporte un nouvel éclairage sur la façon de penser son logiciel et d’écrire des tests : il s’agit de la notion de faits. Voici un exemple de test :

  (fact "un exemple de test tout simple"
     (numerical-reverser 103) => 301)

Voici ce qu’en dit l’auteur :

I call this a « fact » because, in a world without mutability, it just is a fact that the numerical-reverser of 103 is 301. Since I work test-first, I like to think of programming as making false claims about the world of the program, then changing that world to make the claims true.

J’aime beaucoup cette idée de faits (des nouvelles fonctionnalités) que l’on clame haut et fort au sujet du monde représenté par son logiciel. Le travail consiste ensuite à modifier cet univers pour que ce fait devienne vrai.

Clojure permet également une syntaxe bien sympathique à base de flèches, et je trouve  tout a fait pertinent de décrire les tests comme des exemples qui illustrent et documentent le code. Malheureusement, le langage java ne nous permets pas de faire cela, mais j’imagine que ce serait possible avec d’autres langages (scala ? erlang ? ruby ?)

I use the arrow because I think of tests as examples. When people show snippets of code as examples, they often use an arrow to separate what you type from what you should expect to see.

Je trouve cette approche du TDD tout à fait rafraichissante et novatrice et je crois que cela va changer ma façon d’aborder mes tests et mon code dès maintenant ! Cela met l’accent sur le côté démiurge lié à la création de code, de se concentrer sur l’univers qu’il nous reste à créer.

Et vous, qu’en pensez-vous ?


Références :

Cette entrée a été publiée dans tests, avec comme mot(s)-clef(s) , , , , . Vous pouvez la mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>