Bonjour, je suis face à un gros dilemme.
Nous developpons une application. Certaines classes utilisent @Configurable pour recevoir une injection de données à travers aspectJ (des propriétés en autowired).
Problème: aspectj n'interviens qu'au chargement de la classe pour la traficotter (load time weaving). Nous avons toute une batterie de unit tests, et certains d'entre eux n'utilisent pas aop du tout dans leur context. Lorsque ces unit test démarrent en premier, ils chargent certaines classes @Configurable donc, sans avoir démarré aspectj. Ces classes sont maintenant dans le classloader sans aspect injecté dedans.
Lorsque le unit test utilisant AOP démarre, il est trop tard, la classe n'aura plus l'opportunité d'etre woven. Et le unit test échoue car les champs ad-hoc ne sont pas initialisés.
concrètement, ça se traduit par la situation suivante avec maven:
je lance la batterie de tests -> echec du unit test aop
je lance le test aop uniquement (mvn -Dtest=...) réussite du test
la première alternative qui me soit venue à l'esprit: mettre un fork à chaque test. Seulement, maven compte alors 0 test dans hudson, bien que tous les tests se soient exécuté, ce qui perd de l'intéret d'utiliser hudson...
Quelqu'un connait-il le moyen de forcer spring à injecter ses aspect même si les classes ont déjà été loadées?
Partager