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?