当前位置: 首页 > 知识库问答 >
问题:

Spring Boot JMS应用程序的单元测试将消息留在队列中

伯茂才
2023-03-14

我有一个spring boot JMS应用程序,它在启动期间加载多个WebShpere MQ队列,并将消息从这些队列复制到另一个队列。一切正常,但我正在开始一些单元测试,我想有几件事我不理解。因此,我有一个config类,它包含一组带注释的bean,其中一个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()使用具有应用程序上下文的主类,然后测试运行程序像通常一样启动应用程序。如果是这种情况,我不知道如何进行单元测试,如果它每次都要加载我的队列,而从不读取它们。有什么建议或概念要澄清,以帮助我看得更清楚?

共有1个答案

欧君之
2023-03-14

因此,我不确定这是否只是对功能的一次攻击,还是仅仅是正确的做法。我只是设置了一个@before和一个@after,基本上只是清除队列,以确保单元测试可能放入的内容总是将其取下。

如果有人决定在知识共享方面做出贡献,以了解到底发生了什么,以及如何更好地与框架合作,那将是非常感谢的。否则,我希望这篇文章会跌到互联网的最底层,再也不会被看到。

 类似资料:
  • 我正在使用Spring4.3.5.Release和ActiveMQ5.14.3来处理消息队列。 下面是我的单元测试: 这个测试工作得很好,并且消息会正确地进入队列! 因为单元测试是事务性的,所以我希望当测试结束时,消息会从队列中回滚,但似乎并非如此。 我知道这是一个“集成”测试,因为它实际上是接触ActiveMQ服务器并将消息放入队列。 那么,我如何使这真正事务性,使我刚刚放在队列上的消息真的在它

  • 本章讨论使用 JUnit,Mockito,MRUnit 和 HBaseTestingUtility 对 HBase 应用程序进行单元测试。大部分信息来自关于测试 HBase 应用程序的社区博客文章。有关 HBase 本身的单元测试的信息,请参阅 hbase.tests 。 175. JUnit HBase 使用 JUnit 进行单元测试 此示例将单元测试添加到以下示例类: public class

  • 问题内容: 在使用mocha和supertest对我的node.js应用程序(基本上是REST后端)进行单元测试时,我只需要屏幕上特定于测试的消息,但标准输出也被应用程序日志消息所困扰。 我从以下单元测试开始: …并获得此输出(这是 不 应该的): 我用[App]标记了应用程序日志消息。我 真正想要的 是单元测试的输出: 我如何抑制应用程序插入Mocha的报告程序输出的console.log /

  • 我需要在我的应用程序中进行单元测试JMSXGroupID。有人能告诉我是否有示例文章或参考文献来实现这一点吗?我试图在ActiveMQ门户中查看参考文献,但看起来下面的Hudson链接坏了。我正在使用Spring JMS进行编程。 http://activemq.apache.org/junit-reports.html

  • 主要内容:面试题剖析,解决方案面试题剖析 我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数据 team,就需要同步一个 mysql 库过来,对公司的业务系统的数据做各种复杂的操作。 你在 mysql 里增删改一条数据,对应出来了增删改

  • 在Azure服务总线主题中,消息如何从死信队列移动到主题? 它是否会自动移动到主题,或者我们需要在门户中配置主题的属性,或者是否有任何其他方法可以做到这一点?(我不喜欢在这里使用任何代码,我希望只做配置更改)