2017-07-28 43 views
1

我的公司正在开发一个使用Spring Boot,Spring MVC,带有EclipseLink和动态编织的JPA的Web应用程序。 我的任务是准备UI和集成测试的实现,使用JUnit和@SpringBootTest启动应用程序并使用Selenium与它进行交互。@SpringBootTest干扰EclipseLink动态编织

截至Spring Boot Testing Features指出, 测试使用@SpringBootApplication注释可以使用@MockBean注释的定义嘲笑的Mockito的ApplicationContext的内豆类。 这是通过注册BeanFactoryPostProcessor,MockitoPostProcessor递归地扫描用@Component@Configuration注释的类来注册用@MockBean注解的类和字段。

不幸的是,这会导致在应该扫描它们的LocalContainerEntityManagerFactoryBean实例化并设置LoadTimeWeaver之前,加载这些类中引用的实体类,从而导致跳过这些实体的加载时间编织。 这会导致NoSuchMethodException用于编织类似_persistence_propertyChange()执行持久性操作时创建的方法。

是否可以使用@SpringBootTest与EclipseLink和动态编织? 如果不是,那么对于最近的Spring Boot版本,设置集成测试 会是一个不错的选择?

回答

0

我解决了这个问题,通过使用自定义SpringApplicationRunListenercontextPrepared()来从ApplicationContext中删除有问题的BeanFactoryPostProcessor,然后才被Spring执行。