私はMessageSource
(実際にはJmsDestinationPollingSource
s)のセットを定期的にポーリングしています。フードの下では、これはキュー項目を持続するOracle AQデータベースです。模擬JMSメッセージソース
@Bean
@InboundChannelAdapter(value = "queueSourceChannel", poller = @Poller(fixedDelay = "1000"))
public MessageSource queueSource() {
return Jms
.inboundAdapter(connectionFactory)
.configureJmsTemplate(t -> t.deliveryPersistent(true)
.jmsMessageConverter(jacksonJmsMessageConverter)
).destination(queueName).get();
}
しかし、今、私はもちろんのOracleの持続性なし@SpringBootTest
を作りたいと思います。
私は今これをしなかった方法では、豆の上(Mockito)をあざけることでした
@MockBean(name = "queueSource")
private MessageSource queueSource;
この方法は、テストクラスはMessageSourceがポーリングされていることを心配することなく、実行することができます。
しかし、私が言及したように、私は複数のMessageSourceを持っています。私はこのポーリングを別の方法で無効にしたいと思います。
私は今これをやっている方法は愚かである:
@MockBean(name = "queueSource")
private MessageSource queueSource;
@MockBean(name = "queueSource2")
private MessageSource queueSource2;
@MockBean(name = "queueSource3")
private MessageSource queueSource3;
.. and so on
私はすべてのMessageSources、またはすべてJmsDestinationPollingSource年代をモックしようとしたが、それは難しいようです(私はPowerMockitoについて読んだけどので、まだそれを試していませんでした私はそれが異なって行うことができると思う)。
私は、テストスコープでポーラーを無効にすることも可能であると考えました。 私は考えなかった私の問題に対する解決策がもっとあると思います。 すべてのサポートが高く評価されています。
おそらく 'autoStartup = false'はInboundChannelAdapterにありますか? – codesmith
'autoStartup'が動作するかもしれませんが、手動で各Beanを起動する必要がありますか? – codesmith