私は複数のモジュールを持つ Java アプリケーションを持っています - (GWT-)RPC サービス、perf-library
(remote-client
私のチームが書いた/所有しているすべての Java コード)。にperf-library
は Spring AOP アスペクト関連のコードが含まれており、主に傍受されたメソッド ログをデータ ストアにプッシュするために使用されます。現在、perf-library
実際にキューを維持し、ログをデータ ストアにプッシュするジョブを処理する別のリモート クライアントに依存しています。したがって、ある意味ではperf-library
、タスクをリモートクライアントに委任するだけです。ビジネス ロジック コードは、AOP ロジックを持つ傍受されたメソッドを呼び出すため、リモート クライアントに依存します。明らかに、単体テスト内からリモートクライアントに接続したくありません。メソッドの実装をモックする必要があると思いますpush()
リモートクライアントに接続します。私が理解できないのは、ビジネス ロジック コード パッケージの単体テストにモック実装を使用する方法です。
物事を明確にするために、私はこのようなモジュールを持っています -
RPC service module
- 例: メソッドlogin()
が傍受された。perf-library
- アスペクト (のようなメソッドをインターセプトするlogin()
) と呼び出す実装がありますremote-client
remote-client
- いくつかのデータストアにデータをプッシュ
ここで、RPC サービス メソッドの単体テストを作成するために、push()
perf-library の内部にある のモック実装を取得するにはどうすればよいですか。たとえば、2 つのクラス (1 つは本番用、もう 1 つはテスト用) によって実装されるインターフェイスLogClient
( method を持つ) があるとします。push()
この Test 実装を perf-library 自体の単体テストに使用できますが、RPC 単体テストでそれを使用するにはどうすればよいですか。私はSpringが初めてなので、これがSpringなどで簡単にできるかどうかはわかりません。どんな助けでもいいでしょう。
注: Bean と DI の維持には Spring を使用しています。