5

私はSpring aopアスペクトを持っており、それは以下のようなメソッドを持っています:それは特定のメソッドの前に呼び出されるアスペクトです。

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

これにはjunitテストケースを書く必要があります。パラメータをインスタンス化して送信するにはどうすればよいsomeMethodですか? どうすればJoinPoint引数を入力できますか? ジョイントポイントにパラメータを設定して渡すにはどうすればよいですか? アスペクトは、アプリケーション コンテキスト xml ファイルで構成されます。

ありがとう!

4

2 に答える 2

7

ここにはいくつかの良いオプションがあると思います...

  1. JoinPointインターフェースです。このため、期待する動作を持つ独自の「スタブ」実装を作成できるはずです。テストで、このスタブの新しいインスタンスをインスタンス化し、それをsomeMethodメソッドに渡します。
  2. モック フレームワークを使用してJoinPointオブジェクトをモックし、モックで予想される動作をセットアップします。一般的なモッキング フレームワークに慣れていない場合、これはやや異質に聞こえるかもしれません。そのため、人気のあるモッキング フレームワークであるMockitoに関するこのドキュメントを参照することをお勧めします。

単体テストに関しては、ベスト プラクティス (少なくとも私のもの) は、単体テストが単体のみをテストしていることを確認するために、テストでは常に何らかのモック/スタブ (メンバーおよび渡されたパラメーター用) を使用する必要があることを示唆しています。JoinPointその Spring/AspectJ が使用する実装を使用する場合、単体テストでそれらの実装のいくつかのロジックをテストしている可能性もあります。これらの実装の詳細が将来変更された場合、コードを変更しなくてもテストが中断する可能性があります。

于 2013-04-08T14:09:28.600 に答える