我构建了一个接收 JMS 消息的 Spring 应用程序 (@JmsListener
)。
在开发过程中,我想向监听器监听的 JMS 队列发送一些消息,因此我编写了一个单元测试来发送一些消息 (JmsTemplate
)。在此单元测试中,我使用 @SpringBootTest
和 @RunWith(SpringRunner.class)
来加载应用程序上下文(用于数据源等的 bean)。
但是,当单元测试开始时,它还会加载直接开始使用我的新消息的 jms 监听器 bean。
我想在此测试场景中禁用此 jms 监听器 bean,以便将消息添加到队列中。稍后,我可以启动主应用程序并观察它们的使用情况。
我应该如何处理这个问题?
我想我也可以问我如何禁用一般的 bean。
提前致谢。
最佳答案
您可以使用配置文件 来解决这个问题。
在你的监听器中,添加@Profile
注解:
@Profile("!test-without-jmslistener")
public class JmsListenerBean {
...
}
这告诉 Spring 如果配置文件“test-without-jmslistener”不 Activity (感叹号否定条件),它应该只创建这个 bean 的实例。
在单元测试类中,添加以下注释:
@ActiveProfiles("test-without-jmslistener)
public class MyTest {
...
}
现在 Spring 测试运行器将在运行您的测试之前激活此配置文件,并且 Spring 不会加载您的 bean。
关于java - 在单元测试中禁用 JMS 使用 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44150522/