2017-07-28 12 views
1

私の会社は、SpringBoot、Spring MVC、JPAとEclipseLinkおよび動的織りを使用してWebアプリケーションを開発しています。 私の仕事は、JUnitと@SpringBootTestを使ってアプリケーションをスピンアップし、Seleniumを使ってそれと対話するUIと統合テストの実装を準備することです。@SpringBootTestがEclipseLinkの動的織りに干渉する

Spring Boot Testing Featuresで述べたように、@SpringBootApplicationアノテーションを使用し テストは@MockBean注釈の使用はMockitoは、ApplicationContextの中の豆のためにモックを定義することができます。 @MockBeanと注釈されたクラスとフィールドに対して、BeanFactoryPostProcessor,MockitoPostProcessorを登録し、@Componentまたは@Configurationで注釈付けされたクラスを再帰的にスキャンすることによってこれを実現します。

残念ながら、これにより、これらのクラスで参照されるエンティティクラスがロードされるため、スキャン対象のLocalContainerEntityManagerFactoryBeanがインスタンス化され、LoadTimeWeaverで設定されるため、これらのエンティティの読み込み時間がスキップされます。 これは、持続操作が実行されるときに_persistence_propertyChange()のように編成されたメソッドの場合、NoSuchMethodExceptionになります。

@SpringBootTestをEclipseLinkとダイナミックウィービングで使用することはできますか? もしそうでなければ、統合テストを設定するための良い代替手段は何でしょうか? 最近のSpring Bootのバージョンは?

答えて

0

私がこの問題を解決するには、SpringApplicationRunListenercontextPrepared()を使用して、問題のあるBeanFactoryPostProcessorApplicationContextから削除してから、Springで実行されるようにしました。

関連する問題