アプリケーションの完全なSpringコンテキストを作成し、他のアプリケーションに向けてエンドポイントをモックアウトし、テストを実行する一連の統合テストがあります。たとえば、RESTサービスを呼び出してから、データベースで結果を確認します。 REST サービスが呼び出されました。
テストしたいケースの 1 つは、Spring Integration を使用した JMS メッセージの消費です。これらのテスト ケースでは、インメモリ ActiveMQ ブローカーを作成し、メッセージを配置して、メッセージの消費によって望ましい結果が得られることを確認します。このアプローチには、良い解決策が見つからないという問題があります。
メッセージ処理はテスト実行とは別のスレッドで行われるため、動作を確認する前にしばらく待つ必要があります。今は でやっていますがThread.sleep
、あまり満足していません。第一に、ビルド時間が長くなり、第二に、設定が低すぎるとランダム エラーが発生しやすくなります。これにより、念のため、これらの各テストが 2 秒間スリープ状態になります。
メッセージが処理されたかどうかを制御する方法はありますか? おそらく JmsTemplate を介して ActiveMQ ブローカーを確認する方法はありますか?