2013-04-08 8 views
5

私はspring aopのアスペクトを持ち、以下のようなメソッドを持っています。これは特定のメソッドの前に呼び出されるものです。ジョイントポイントを渡すことでスプリングアスペクトのユニットテストケース?

public void someMethod(JoinPoint jp) { 
     //Somelogic 
    } 

これについては、junitテストケースを作成する必要があります。どのようにインスタンス化し、パラメタをsomeMethodに送ることができますか?私はどのように私はJoinPointにargsを設定できますか?どのようにジョイントポイントでパラメータを設定して渡すことができますか?アスペクトはアプリケーションコンテキストXMLファイルで設定されます。

ありがとうございます!

答えて

5

私はあなたがここに...

  1. JoinPointインターフェイス良いオプションのカップルをされていると思います。このため、期待した動作を持つ独自の「スタブ」実装を作成できるはずです。テストでは、このスタブの新しいインスタンスをインスタンス化し、someMethodメソッドに渡します。
  2. 模擬フレームワークを使用してJoinPointオブジェクトをモックし、モックに予想される動作を設定します。これは一般的なフレームワークを熟知していない場合には多少異質かもしれませんので、私はこの文書をよく使う模擬フレームワークであるMockitoを見てみることをお勧めします。

それはユニットテストは単なるテストであることを保証するために、ユニットテスト、ベストプラクティス(私は少なくとも)テストは常にある種のモック/スタブを使用する必要があることを示唆している(会員用とパラメータを渡す)に来ますユニット。あなたは春/ AspectJのは、使用していますJoinPointの実装を使用した場合、あなたはまた、あなたユニットテストでその実装のいくつかのロジックをテストするかもしれません。これらの実装の詳細が将来変更されると、コードが変更されることなくテストが中断される可能性があります。

0

私はこのことに気づきました。これを行う最も簡単な方法は、アスペクトがバインドすべきいくつかの「モックメソッド」を作成することであることが分かったので、テストでこれらのメソッドを呼び出して、 。

最終的に宣言され、したがって模擬するのが難しい反射オブジェクトのように、通常はJoinPointの内部にある多くのネイティブなものにアクセスしたいので、JoinPointをモックするのは難しく、非常に時間がかかります。

関連する問題