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 :</p>