![](/img/trans.png)
[英]how to make persistent JMS messages with java spring boot application?
[英]Unit Test of Spring Boot JMS Application Leaves Messages on Queue
我有一個Spring Boot JMS應用程序,該應用程序在啟動期間加載了多個WebShpere MQ隊列,並將消息從那些隊列復制到另一個隊列。 一切正常,但是我正在開始一些單元測試,我認為還有一些我不了解的事情。 因此,我有一個配置類,其中包含一堆帶注釋的bean,其中一個是在JMSListener啟動之前執行消息加載的類。 我有簡單的單元測試:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ErrorQueueReportApplication.class)
@ActiveProfiles(profiles = "DEV")
public class CastsApplicationTests {
static Logger logger = LogManager.getLogger(CastsApplicationTests.class.getName());
@Value("${hostname}")
String host;
@Test
public void testEcsProps(){
System.out.println("Running test");
assertEquals("hostname.someTLD", host);
}
}
這個測試通過了,但是我只希望簡單地檢查我的@Value
看看它們是否相等並完成。 但是,將其作為單元測試運行會啟動整個應用程序,並且由於我有一個進行隊列連接並加載隊列的bean,因此此單元測試將建立隊列連接並加載隊列。 但是后來我的JMSListener從未啟動過,因此一切都停留在隊列中,我必須手動清除它。 這是無法接受的。
據我對Spring Boot的了解, @SpringApplicationConfiguration()
接受了具有應用程序上下文的主類,並且測試運行程序像往常一樣啟動了應用程序。 如果是這種情況,我不確定如何進行單元測試,是否每次都會加載我的隊列並且從不讀取它們。 有什么建議或概念需要澄清,以幫助我更清楚地看到?
因此,我不確定這是否只是圍繞該功能的破解,還是僅是正確的做法。 我只是設置了一個@Before
和一個@After
,基本上只是清除隊列以確保單元測試可能放到它上面的東西總是被@Before
。
如果有人決定為某些知識共享做出貢獻,包括確切的過程以及如何更相應地使用框架,那將仍然值得贊賞。 否則,我希望該帖子跌入互聯網的底部,再也不會被看到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.