簡體   English   中英

Spring Boot JMS應用程序的單元測試將消息留在隊列中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM