2017-07-28 2 views
1

Mon entreprise développe une application Web utilisant Spring Boot, Spring MVC, JPA avec EclipseLink et le tissage dynamique. Ma tâche consiste à préparer la mise en œuvre de l'interface utilisateur et des tests d'intégration en faisant tourner l'application en utilisant JUnit et @SpringBootTest et en interagissant avec elle en utilisant Selenium.@SpringBootTest interfère avec le tissage dynamique EclipseLink

Comme indiqué à Spring Boot Testing Features, Des tests utilisant l'annotation @SpringBootApplication peuvent utiliser l'annotation @MockBean pour définir Mockito se moque des haricots dans le ApplicationContext. Ceci est réalisé en enregistrant un BeanFactoryPostProcessor, MockitoPostProcessor, balayant récursivement les classes annotées avec @Component ou @Configuration pour les classes et les champs annotés avec @MockBean. Malheureusement, cela provoque le chargement des classes d'entités référencées dans ces classes avant que le LocalContainerEntityManagerFactoryBean qui est supposé les rechercher soit instancié et configuré avec LoadTimeWeaver, provoquant ainsi le saut du temps de chargement pour ces entités. Cela conduit à NoSuchMethodException s pour les méthodes créées par tissage comme _persistence_propertyChange() lorsque des actions de persistance sont effectuées.

Est-il possible d'utiliser @SpringBootTest avec EclipseLink et le tissage dynamique? Sinon, quelle serait une bonne alternative pour configurer un test d'intégration pour une version Spring Boot récente?

Répondre

0

je résolu le problème en utilisant une coutume SpringApplicationRunListener « s contextPrepared() pour enlever les problématiques BeanFactoryPostProcessor s du ApplicationContext avant de s'exécutés au printemps.