Tester ses EJBs avec Arquillian

La rédaction de tests est très importante lors des phases de développement d’une application. Cependant lors de développement d’application Java EE comme tester les classes métier utilisant des EJBs? Pour être testés, ils doivent être déployés au sein d’un conteneur d’EJBs qui va gérer leur instanciation et leur injection. Arquillian est un outil qui va permettre de gérer le déploiement des archives à tester avant d’exécuter les tests. Voyons comment.

arquillian_logo_450px

 Présentation

Arquillian est un Framework de test développé par JBoss qui permet la réalisation des tests à l’intérieur d’un conteneur embarqué ou distant. Arquillian s’intègre parfaitement aux Frameworks de tests comme JUnit ou TestNG ainsi qu’aux environnements de développement ou plugins de tests Maven. Grâce à cette intégration, il est facile de créer des tests d’intégration car ils sont très semblables aux tests unitaires. Lors de l’écriture du test JUnit, il suffit de paramétrer le lanceur d’Arquillian. Ce lanceur va tout d’abord exécuter une méthode annotée qui va lister les classes nécessaires à l’exécution de ce test et créer une archive. Il va déployer l’archive sur le conteneur paramétré et lancer le test d’intégration. Une fois le test terminé, l’archive est supprimée du conteneur. Dans le cas d’un serveur embarqué, Arquillian sera chargé de son démarrage et de son arrêt.

L’objectif principal des développeurs d’Arquillian est vraiment de fournir un outil simple d’utilisation pour réaliser des tests d’intégration. Son architecture permet une grande souplesse de paramétrage. Son fonctionnement permet d’avoir de véritables rapports de tests automatisés sur des classes situées dans un environnement fonctionnel. Il permet d’accéder à nos EJBs directement depuis nos classes de tests sans configuration supplémentaire que n’en ont les classes métiers.

Utilisation avec JBoss Remote

pom.xml

EnterpriseJavaBean.java

EJBTest.java

Dans ce dernier fichier, nous avons plusieurs éléments importants.

  • @RunWith(Arquillian.class) : ceci va demander à Arquillian de prendre le pas sur JUnit pour ce test
  • @EJB : nous utilisons cette annotation pour demander au conteneur d’EJBs de faire l’injection
  • @Deployement : Pour que Arquillien puisse réaliser le test il lui faut déployer une archive contenant le classes nécessaires aux tests. Cette méthode va permettre la création de cette archive.
  • ShrinkWrap : librairie utilisée par Arquillian dans le cadre de la création l’archve.
  • @Test : méthode de test

Une fois tout ceci créer, il faut s’assurer que le serveur JBoss est démarré sinon une erreur sera levée et vous pouvez tester en lançant le test comme un test JUnit classique.

Utilisation avec TomEE embedded

Il peut parfois être plus utile d’avoir un serveur d’application embarqué qui servira pour la réalisation des tests d’intégration. TomEE, notamment grâce à sa légèreté et sa rapidité de démarrage est un choix que je trouve pertinent. Pour utiliser TomEE, il suffit de remplacer la dépendance au connecteur JBoss par la dépendance suivante.

Les autres fichiers sont les mêmes.

Le fonctionement avec TomEE embedded est différent de celui de JBoss Remote car Arquillian va gérer lui-même le démarrage et l’extinction de TomEE.

Il est maintenant facile de tester les EJB et leur injection dans les classes grâce à Arquillian

spacer

Laisser un commentaire