2017-07-28 69 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執行。