模拟JmsTemplate进行集成测试

时间:2014-08-07 09:08:28

标签: java spring spring-jms springmockito

需要在我的应用程序中模拟JmsTemplate进行集成测试。

在我的appcontext.xml

<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。 提前谢谢。

2 个答案:

答案 0 :(得分:7)

或者在Spring 4的味道中;)

@Bean
public JmsTemplate jmsTemplate() {
    return Mockito.mock(JmsTemplate.class);
}

正如@Stephane所说,但没有xml 但我仍然建议您使用嵌入式代理进行集成测试。因为它可以让你检查究竟是什么进入队列。

答案 1 :(得分:2)

以下情况如何?

<bean id="core_jmsTemplate" class="org.mockito.Mockito" factory-method="mock">
    <constructor-arg value="org.springframework.jms.core.JmsTemplate"/>
</bean>

您可能需要在测试中注入模板并配置模拟(given(...).willReturn)。