通常、我々はQueueChannel
を使用してテストを行い、receive(10000)
メソッドを介してメッセージを待ちます。この方法では、データのソースとは無関係に、テストメソッドのスレッドは、データが到着するまでブロックされます。
SourcePollingChannelAdapter
はTaskScheduler
によってトリガされるため、テストフローとは別のスレッドでフロー全体のロジックが実行されます。私はチャンネルを置き換えることについてのあなたのアイデアが役に立たないことを意味します。 Thread.sleep()
には値があるかもしれませんが、実際には最大10秒間しか待機しないため、QueueChannel.receive(10000)
は非常に信頼性があります。
テストケースをブロックする別の方法は、CountDownLatch
という標準から来ています。これは、フローのどこかでcountDown()
となり、テストメソッドで待機します。
テストにはいくつかの方法があります:繰り返しの間に短いスリープ期間を持つループをいくつか持っていて、いくつかの状態をチェックして終了して確認してください。これは、最後にポーラーとデータベースの場合に役立つかもしれません。したがって、私たちは、そのループ内でSELECTを実行し、目的の状態にします。
Reference Manualに追加情報があります。