JUnit Runner pour CDI / Weld
• Alexis Hassler
Dans mon billet précédent, j’ai proposé d’utiliser un Rule pour tester des composants CDI. Cette technique n’est pas totalement satisfaisante, d’une part parce que l’initialisation se fait pour chaque test et d’autre part parce que son utilisation demande un peu de code. J’ai donc décidé de changer de tactique et développer un Runner.
Pour ce Runner, j’ai fait une classe qui hérite du runner par défaut et j’ai redéfini la méthode run() pour démarrer et arrêter Weld. J’ai redéfini aussi la méthode createTest() afin qu’elle retourne une instance gérée par Weld de la classe de test. Ceci permet d’injecter les objets à tester et donc de réduire sensiblement la quantité de code.
public class WeldRunner extends BlockJUnit4ClassRunner {
private Weld weld;
private WeldContainer container;
public WeldRunner(Class klass) throws InitializationError {
super(klass);
}
@Override
public void run(RunNotifier notifier) {
initializeWeld();
super.run(notifier);
shutdownWeld();
}
@Override
protected Object createTest() throws Exception {
return container
.instance()
.select(getTestClass().getJavaClass())
.get();
}
private void initializeWeld() {
weld = new Weld();
container = weld.initialize();
}
private void shutdownWeld() {
weld.shutdown();
}
}
Il ne reste plus qu’à l’utiliser et à injecter le beans à tester.
@RunWith(WeldRunner.class)
public class TotoServiceTest3 {
@Inject
TotoService service;
...
}
Je trouve cette technique plus sympa que la Rule, il reste à la tester plus sérieusement. J’ai ajouté ce Runner à ma synthèse des techniques de tests CDI, sur JTips.
Alexis Hassler
J'ai créé la société Sewatech en 2005, pour y exercer mon métier de développeur full stack, à dominante back end.
Vous pouvez me contacter si vous cherchez un développeur indépendant expérimenté (plus de 25 ans d'expérience) pour intégrer votre équipe de projet. Je peux aussi intervenir pour un audit ou une mission de conseil.
Enfin, je donne des formations sur Spring, Vert.x, WildFly,... en intra sur site ou à distance.
Archives
-
- Authentification Digest et chiffrement des mots de passe, avec Tomcat Realm
- Adieu boot2docker, bonjour docker-machine
- Authentification Digest et chiffrement des mots de passe, avec Spring Security
- Découverte de CompletableFuture
- Comment ouvrir les ports JMX remote à chaud
- sewatech.fr sur mobile
- Intégration continue avec Travis CI et Docker Hub
- Putain, 10 ans !
- Charlie Hebdo
- Bilan 2014 du blog
-
- Comment installer OpenVPN sur Google Cloud
- Comment chiffrer les mots de passe de Tomcat
- Démarrer RESTEasy en mode standalone
- Réduire la taille des images Docker
- Construire une image Docker pour WildFly
- Construire une image Docker pour Apache / mod_cluster
- Compiler mod_cluster pour Apache 2.4 : pourquoi et comment ?
- Mon interview sur ma formation WildFly, par Arun Gupta
- Installer un cluster WildFly avec Docker
- WildFly 8, administration guide : le livre
- Devoxx France 2014 : BOFs et à-cotés
- Devoxx France 2014 : Conférences
- Devoxx France 2014 : Keynotes
- Devoxx France 2014 : Universités et Ateliers
- Pub WinDev : mon mail de réponse
- Les nouveautés de WildFly 8
-
- Attention aux parenthèses dans Logback
- Accéder à la console de JBoss AS 7 via Apache Web Server
- JBoss EAP 6 et les bonnes nouvelles
- Construire soi-même JBoss AS 7 (ou WildFly)
- Développeurs JSF, fuyez @ManagedBean
- Tester des beans en scope Conversation avec Arquillian
- Accéder aux composants remote de JBossAS 7
- Présentation Arquillian
-
- Déployer une application JavaEE via l'API Cloudbees
- Les sorties de l'été 2011
- Sorties de l'été 2011, JBoss AS 7
- Versions mineures de JBoss AS
- Sorties de l'été 2011, Java SE 7
- Injection de logger avec Spring
- Injection de logger avec CDI
- Découverte de Cloudbees
- Mots de passe chiffrés pour les datasources de JBoss
- JUnit Runner pour CDI / Weld
- JUnit Rule pour CDI / Weld
- Carte des JUGs en France
-
- DAO ou pas DAO ?
- Devoxx Schedule dans Google Calendar
- Environnement de développement Java EE 6
- Tutoriel JSF, Spring et Hibernate
- Enrichir les logs avec LogWEx
- VirtualBox 64bits sous MacOS X
- Premiers pas avec Git et GitHub
- Déploiement de Silverpeas sur JOnAS
- SLF4J et JCL sous Jonas 5
- Tests unitaires pour Google App Engine
- JRebel avec OpenJDK et Grizzly
- Silverpeas sur JBoss 5
- Script de création de machine virutelle VirtualBox
- Installation de Silverpeas
- Persistance dans Google App Engine : JDO, JPA ou ... ?
- Environnement de développement pour GAE
- Mon projet GAE
- Démarrage du blog