Articles avec le tag ‘Java’

GWT et les tests unitaires rapides

Jeudi 11 juin 2009

On en a beaucoup parlé lors de sa sortie, on en parle encore maintenant avec la sortie de Google Wave, il s’agit de GWT (Google Web Toolkit).
Rapidement : GWT c’est coder du Javascript en Java, ce qui permet de faire « facilement » de l’Ajax avec des gens qui maîtrisent bien ce langage (plus que JS en tout cas…).

Bref, nous ne sommes pas ici pour parler de GWT tout seul mais plutôt de la façon dont on écrit des tests pour cette technologie. Armé de notre JUnit favoris et de Mocks en tout genre (pour Spring, pour les Web Services, tout ça…) nous sommes pourtant démunis face à GWT. En effet dès l’écriture du premier test unitaire (qui ne ferait que créer un objet par exemple) nous avons une erreur de ce type :
java.lang.ExceptionInInitializerError
[...]
Caused by: java.lang.UnsupportedOperationException: ERROR: GWT.create() is only usable in client code! It cannot be called, for example, from server code. If you are running a unit test, check that your test case extends GWTTestCase and that GWT.create() is not called from within an initializer or constructor.
at com.google.gwt.core.client.GWT.create(GWT.java:91)
at com.google.gwt.user.client.ui.UIObject.(UIObject.java:139)
... 23 more

Ok, pas très grave puisqu’apparement Google y a pensé et nous donne même la solution : on étends la classe GWTTestCase, on refait la même chose et ça devrait marcher. Et c’est vrai ça marche, alors où est le problème ? Le problème c’est que GWT a besoin de lancer son navigateur pour exécuter les tests et que c’est gourmand en ressources et en temps d’exécution (ceux qui font des tests avec un contexte Spring complet savent de quoi je parle).

Hors je travaille sur des projets en méthodologie Agile (avec du TDD dedans), et la fréquence de passage des tests unitaires est très élevée. Contrairement aux tests d’intégration qui sont exécutés moins souvent, le passage des tests unitaires fait partie du processus de création du code, il est donc impensable d’attendre 10 à 15 secondes que le test veuille bien se lancer alors qu’on peut en avoir besoin plusieurs fois par minute !
(Lire la suite…)

Base de données H2, la relève de HSQLDB ?

Mercredi 20 août 2008

Le créateur de Hypersonic SQL, Thomas Mueller, se replonge dans la création d’une base de données légère avec H2 (enfin ça remonte au moins à 2007).

Comme HSQL, les points forts de cette BDD sont une faible empreinte mémoire et un mode embarqué très performant. Les graphiques du site officiel sont d’ailleurs assez révélateurs sur les performances que l’on est en droit d’attendre de ce produit…

Graphes de performances

Operations/second (détails)

Un problème tout de même… Alors qu’une grande quantité d’applications JEE utilise Hibernate pour la persistance, le dialecte relatif à H2 est bugué. Cette petite classe est responsable de la traduction du code Hibernate en requêtes SQL. Un problème qui n’est toujours pas adressé malgré la sortie de la version 3.3 du framework alors qu’un patch est disponible depuis un certain temps déjà…

J’aimerais beaucoup l’utiliser pour le projet sur lequel je travaille en ce moment, mais je préfère attendre la prise en compte du patch… Est ce que quelqu’un a des retours sur l’utilisation de cette base de données dans la vrai vie ?

L'Université du SI 2008 : "j'y étais !"

Vendredi 4 juillet 2008

Et c’était un très grand moment !

Ça a commencé très fort avec le discours de Michel Serres sur l’innovation ; ou comment l’informatique, après l’écriture et l’imprimerie, marque une 3ème révolution dans l’histoire de l’humanité. Malgré l’heure matinale, le philosophe a su captiver l’attention de son auditoire et provoquer l’enthousiasme des quelques 300 personnes présentes dans la salle !
Et de finir sur « Tout est là devant vous, sous vos mains. Il ne vous reste plus qu’à inventer ! », il n’en fallait pas plus pour marquer le coup d’envoi d’une journée qui s’annonçait riche d’enseignements.

Puis ce fut la course aux sessions. Ayant opté pour le parcours libre, j’ai du effectuer des choix souvent difficiles pour sélectionner le contenu de mes journées face à l’importante densité du programme.
(Lire la suite…)