我正在嘗試編寫一個JMS服務的集成測試,它看起來像這樣。JMS集成測試
@JmsListener(destination = "mailbox", containerFactory = "myFactory")
public void receiveMessage(Email message) throws InterruptedException {
try {
sendEmail(message);
}catch (Exception e){
LOGGER.log(Level.SEVERE,"Failed to deliver email",e);
Thread.sleep(TimeUnit.SECONDS.toSeconds(Optional.of(retryInterval).orElse(5)));
throw e;
}
}
private void sendEmail(Email message){
...............
}
首先,我可以嘲笑這一些怎麼樣?我試圖嘲笑它,但是當我發送消息時,spring啓動應用程序正在調用實際的JMS bean而不是模擬的。似乎這是不可能的。 即使這是不可能的,我是否可以至少調用bean並以某種方式檢查receiveMessage方法是否被調用。而且,如果它被調用,sendEmail部分應該是僞造的,這樣它就不會做任何工作。我有一些想法,比如創建一個用於測試的子類,但對其中的任何一個都不滿意。所以想要如果你可以建議我一個更好的解決辦法?
實際上,我使用了類似的方法,並在內存消息隊列中使用了活動的mq。創建了兩個配置文件,測試和從哪裏啓動不同的東西。 – Imran