2017-04-13 4 views
0

テスト対象オブジェクトがCGLIBで拡張されたときにEasyMockの@TestSubjectアノテーションを動作させる方法はありますか?@TestSubjectでEasymockがCGLIBで強化されました

シナリオ:@TestSubjectオブジェクトは、何らかの理由でSpringがJDKベースのプロキシを使用できないと仮定して、一部のアスペクトを適用するためにCGLIBで拡張されたSpring Beanです。この場合、単に@TestSubjectEasyMockSupport.injectMocks(this)を使用しても実際には機能しません。 EasyMockはモックを注入しますが、実行中にCGLIB拡張クラスの内部機能の仕方によってモックは実際には使用されません。最終的には、モックではなく、オブジェクトが持っていた元のリファレンスが使用されます。

私が知っている唯一のアプローチは、テスト対象にセッターを作成し、手動でセッターを呼び出すことです。しかし時々私はセッターを含むように主題コードを変更するアクセス権/許可/時間を持っていません。

答えて

0

cglibクラスは常にfinal他のプロキシの作成を妨げるもの。したがって、これはできません。むしろ、クラスがすでにcglibプロキシであり、むしろ基本クラスを拡張していることを発見する必要があります。

関連する問題