テスト対象オブジェクトがCGLIBで拡張されたときにEasyMockの@TestSubject
アノテーションを動作させる方法はありますか?@TestSubjectでEasymockがCGLIBで強化されました
シナリオ:@TestSubject
オブジェクトは、何らかの理由でSpringがJDKベースのプロキシを使用できないと仮定して、一部のアスペクトを適用するためにCGLIBで拡張されたSpring Beanです。この場合、単に@TestSubject
とEasyMockSupport.injectMocks(this)
を使用しても実際には機能しません。 EasyMockはモックを注入しますが、実行中にCGLIB拡張クラスの内部機能の仕方によってモックは実際には使用されません。最終的には、モックではなく、オブジェクトが持っていた元のリファレンスが使用されます。
私が知っている唯一のアプローチは、テスト対象にセッターを作成し、手動でセッターを呼び出すことです。しかし時々私はセッターを含むように主題コードを変更するアクセス権/許可/時間を持っていません。