DbSetup, une alternative Ă DbUnit

Lors du développement de tests d’intégration, j’ai récemment eu besoin de charger une base de données à l’aide de jeux de données. Pour écrire mon premier test, j’ai simplement commencé par écrire un fichier SQL. En un appel de méthode (JdbcTestUtils::executeSqlScript) ou une ligne de déclaration XML (<jdbc:script location="" />), Spring m’aidait à charger mes données.
Pour tous ceux qui se sont déjà prêtés à l’exercice, maintenir des jeux de données est relativement fastidieux, qui plus en SQL. Cette solution n’était donc pas pérenne.Depuis une dizaine d’années, j’utilise régulièrement DbUnit pour tester la couche de persistance des applications Java sur lesquelles j’interviens, qu’elle soit développée avec JDBC, Hibernate ou bien encore JPA. Cette librairie open source est également très appréciable pour tester unitairement des procédures stockées manipulant des données par lot. Pour mon besoin, j’aurais donc pu naturellement me tourner vers cet outil qui a fait ses preuves et dont je suis familier.
Mais voilĂ , commençant Ă apprĂ©cier les avantages de la configuration en Java offerte par Spring et les APIs fluides des frameworks FestAssert ou ElasticSearch utilisĂ©s sur l’application, l’idĂ©e d’Ă©crire des jeux de donnĂ©es en Java me plaisait bien. Et justement, il y’a quelques temps, l’argumentaire de l’article Why use DbSetup? ne m’avait pas laissĂ© indiffĂ©rent. C’était donc l’occasion d’utiliser cette jeune librairie dĂ©veloppĂ©e par les français de Ninja Squad et qui mĂ©rite de se faire connaitre, j’ai nommĂ© DbSetup.
Le guide utilisateur de DbSetup Ă©tant particulièrement bien conçu, l’objectif de cet article n’est pas de vous en faire une simple traduction, mais de vous donner envie de l’essayer et de vous prĂ©senter la manière dont je l’ai mis en oeuvre. Celle-ci s’éloigne en effet quelque peu de celle prĂ©sentĂ©e dans la documentation, la faute Ă mes vieux rĂ©flexes d’utilisateur de DbUnit et au bienheureux rollback pattern de Spring.

Lire la suite…
