【发布时间】:2018-01-04 19:34:32
【问题描述】:
我的公司正在使用 Spring Boot、Spring MVC、带有 EclipseLink 和动态编织的 JPA 开发一个 Web 应用程序。 我的任务是准备 UI 和集成测试的实现,使用 JUnit 和 @SpringBootTest 启动应用程序并使用 Selenium 与之交互。
如Spring Boot Testing Features 所述,
使用@SpringBootApplication 注释的测试可以利用@MockBean 注释为ApplicationContext 中的bean 定义Mockito 模拟。
这是通过注册BeanFactoryPostProcessor、MockitoPostProcessor 来实现的,递归地扫描带有@Component 或@Configuration 注释的类以查找带有@MockBean 注释的类和字段。
不幸的是,这会导致这些类中引用的实体类在应该扫描它们的LocalContainerEntityManagerFactoryBean 被实例化并使用LoadTimeWeaver 设置之前被加载,从而导致这些实体的加载时间编织被跳过。
当执行持久性操作时,这会导致 NoSuchMethodExceptions 用于编织创建的方法,例如 _persistence_propertyChange()。
是否可以将@SpringBootTest 与 EclipseLink 和动态编织一起使用?
如果不是,那么设置集成测试的好选择是什么
最新的 Spring Boot 版本?
【问题讨论】:
标签: jpa spring-boot junit eclipselink load-time-weaving