私の会社は、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のバージョンは?