Once upon a time TDD... and me

Once upon a time, there was a young woman that had plenty of projects and passions and was a bit hyperactive. She doesn’t really enjoy talking about her life and asks herself very seriously how is she going to write this post. Among her early age dreams were learning many things about science, especially biosciences, and about software engineering. She started with biosciences (by the way, they are extremely fascinating, nothing is more complex and well crafted than the human body) and then she decided to continue with software engineering. However, the software engineering program that she completed only lasted one year (6 months of classes and 6 months of internship). Of course, this was only a door to access the world that she wanted to discover so much.

tdd

Quand ne pas mocker

En tant que Test Driven Developer et plutôt adepte de l'école de TDD de Londres, j'ai tendance à utiliser un nombre assez important de mocks quand je teste mon code. Cependant, il y a des cas où je trouve plus utile de ne pas en utiliser.

L'objectif de cet article est de décrire ces cas ainsi que la façon de tester le code sans utiliser de mocks.

tests

Il était une fois le TDD... et moi

Il était une fois une jeune fille pleine de projets, de passions et un chouilla hyperactive.
Elle n'aime pas particulièrement raconter sa vie et se demande donc fortement comment elle va réussir à faire cet article.
Parmi ses rêves de gosse se trouvaient d'apprendre plein de choses sur les sciences, notamment les biosciences, et sur l'informatique. Elle a donc démarré avec les biosciences (d'ailleurs c'est méga passionant, rien de plus complexe et de mieux architecturé que le corps humain) puis a décidé d'enchaîner avec l'informatique. Cependant, le cursus suivi en informatique n'a duré qu'un an (moitié cours, moitié stage). Evidemment, il ne s'agissait que d'une porte d'accès au monde qu'elle souhaitait tant découvrir.

tdd

Refactoring Is Like Sleeping

Bob is a developer. Bob has been asked to add a brand new feature to the application. Bob would like to take this opportunity to refactor a little bit the code because it doesn’t respect the good practices that he learnt from the last Software Craftsmanship meetup. Bob has been told that he couldn’t refactor because there is currently not enough time to do it and because he needs to produce. Bob says to himself that there is never enough time anyways…

Sounds familiar? Indeed, refactoring is often seen as an activity without any value. Other things in life can also seem worthless. There is one that takes almost a third of our lives during which we do literally nothing: sleeping!

refactoring

Que faire lorsqu'une méthode privée veut être testée ?

Les tests automatisés servent à vérifier le bon comportement d'un objet (ou d'un ensemble d'objets), indépendamment de la manière dont ce comportement est implémenté. Le comportement d'un objet est décrit par son API publique (constructeurs, constantes et méthodes publiques). Les tests ne devraient donc utiliser que cette API.

Les méthodes privées (et protected) ne faisant pas partie de l'API publique d'un objet, elles ne devraient pas être appelées directement par le code de test.

Cet article a pour objectif de montrer comment réagir lorsqu'il paraît nécessaire de tester une méthode privée.

oop, tests

Refactorer, c'est comme dormir

Robert est un développeur. On a demandé à Robert d'ajouter une nouvelle fonctionnalité à l'application. Robert aimerait bien en profiter pour refactorer un peu le code car il ne respecte pas les bonnes pratiques qu'il a pu voir lors du dernier meetup Software Craftsmanship. On dit alors à Robert qu'il ne peut pas refactorer car, en ce moment, il n'y a pas le temps pour ça et qu'il doit produire. Robert se dit qu'il n'y a de toutes façons jamais le temps…

Cette histoire vous semble familière ? En effet, le refactoring est souvent perçu comme n'apportant aucune valeur. D'autres choses dans la vie peuvent sembler n'apporter aucune valeur. Il y en a notamment une qui prend près du tiers de la vie d'une personne pendant laquelle cette personne ne fait littéralement rien : dormir !

refactoring

Pourquoi ne pas utiliser l'héritage pour éviter la duplication de code ?

L'héritage est une composante très importante des langages orientés objet tels que Java. Cependant, il doit être utilisé à bon escient afin de respecter les bonnes pratiques de programmation.

Il m'est arrivé de rencontrer des cas où l'héritage était utilisé afin de ne pas dupliquer du code. Le but de cet article est d'illustrer une telle utilisation, d'analyser ses inconvénients et de montrer une manière possible de la corriger.

java, oop

Testing Spring MVC Controllers

Since Spring 3.2 (January, 2013), it is possible to test Spring MVC controllers without an external framework. The goal of this article is to show how to test Spring MVC controllers using only Spring testing capabilities.

java, spring, spring mvc, tests

Exposer des ressources statiques avec Spring MVC

Il est souvent nécessaire d'exposer des ressources statiques telles que des images, des fichiers pdf, des vidéos, etc. dans une application web. Ces fichiers sont stockés sur le serveur et ne sont donc pas accessibles à l'utilisateur via une URL.

L'objectif de cet article est d'exposer des fichiers stockés sur le serveur via une URL dans une application Spring MVC.

java, spring, spring mvc

Tell don't ask

Quand j'étais à l'école et que j'apprenais la programmation orientée objet (POO), on nous disait que les classes permettaient d'encapsuler des comportements et de cacher leur implémentation au reste du monde. Ainsi, le code qui appelle une méthode attend d'elle qu'elle se comporte comme elle a été spécifiée, quelle que soit son implémentation.

oop