0

残りのエンドポイントである限り、スプリング ブート アプリケーションでいくつかのストリーム プロデューサー ( @Output) とコンシューマー ( ) を定義しました。@Input今、REST + ストリームの両方をテストしたい

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

まず、これが可能かどうかを知りたいです。REST の場合、TestRestTemplate を自動配線していますが、すべてうまくいきます。

@Autowired
private TestRestTemplate restTemplate;

しかし、私が使用しようとしているストリームの場合:

@ClassRule
public static RabbitTestSupport rabbitTestSupport = new RabbitTestSupport();

これにより、Rabbit が起動しているかどうかを認識できます。これは正常に機能していますが、

 @Autowired
private MessageChannel myProducer;

メッセージを送信すると、エラーは発生しませんが、メッセージはアプリによって消費されません。

プロデューサーとコンシューマーの両方が、分離されたコンテキストではなく、アプリの一部として開始されているように感じました。そのため、これは機能していません。

プロデューサーとコンシューマーは別々のアプリで正常に動作しているため、テスト構成に関連するものと思われます。

何か案は?@SpringBootTest参照が見つからなかったため、誰かが同じテストでRESTとストリームの両方をテストできましたか?

ここに再現子を追加しています: https://github.com/Salaboy/test-spring-cloud-streams/

いくつかのポインタ: https://github.com/Salaboy/test-spring-cloud-streams/blob/master/src/main/java/org/salaboy/streams/SampleApplication.java#L40

そしてテスト: https://github.com/Salaboy/test-spring-cloud-streams/blob/master/src/test/java/org/salaboy/streams/MyAppStreamsTest.java

これらのプロパティを使用するもの: https://github.com/Salaboy/test-spring-cloud-streams/blob/master/src/test/resources/test-application.properties

あなたが提供できるどんな助けにも感謝します。

4

2 に答える 2