Java 用于集成测试的模拟JmsTemplate
需要在我的应用程序中模拟JmsTemplate进行集成测试 在my appcontext.xml中Java 用于集成测试的模拟JmsTemplate,java,spring,spring-jms,springmockito,Java,Spring,Spring Jms,Springmockito,需要在我的应用程序中模拟JmsTemplate进行集成测试 在my appcontext.xml中 <bean id="core_connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiTemplate"> <ref bean="core_jndiTemplate" />
<bean id="core_connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="core_jndiTemplate" />
</property>
<property name="jndiName">
<value>ConnectionFactory</value>
</property>
</bean>
<bean id="core_jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="core_connectionFactory" />
<property name="defaultDestination" ref="core_destination" />
</bean>
<bean id="core_destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="core_jndiTemplate" />
</property>
<property name="jndiName">
<value>queue/CoreQueue</value>
</property>
</bean>
连接工厂
队列/核心队列
需要在我的testcontext.xml中模拟jmstemplete。
提前谢谢。以下内容如何
<bean id="core_jmsTemplate" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="org.springframework.jms.core.JmsTemplate"/>
</bean>
您可能需要注入模板并在测试中配置mock(给定(…)。将返回。或在Spring4;)
正如@Stephane所说,但没有xml。
但我仍然建议您在集成测试中使用嵌入式代理。因为它将允许您检查队列中的确切内容。corejmstemplate没有在任何地方使用,对吗?我认为没有必要嘲笑。不过,您可以使用Spring配置文件来创建一个或另一个bean,具体取决于活动配置文件。我正在test-context.xml中导入app-context.xml。因此需要对其进行初始化。我有一个问题,Spring会像创建普通bean一样创建模拟代理。在这种情况下,when(…).thenReturn(…)
工作正常,但是verify(…)
说我应该在mock上执行该方法。没有理由它应该在该对象上创建代理,除非你的应用程序中有一个超宽切入点的方面。恐怕您需要弄清楚为什么要创建代理。
@Bean
public JmsTemplate jmsTemplate() {
return Mockito.mock(JmsTemplate.class);
}