如何解决如何在Spring框架中为RabbitListenerEndpointRegistry编写junit
我有rest控制器来启动/停止rabbitmq QUEUE。很好。但我需要为此休息控制器写junit。我也做了junit,但这看起来不太好。我不确定我们可以为这个rest控制器编写junit有多好。请帮我为此写更好的junit。
我们在项目中使用spring框架和Mockito。
我的休息控制器
package com.compnay.depart.rest;
import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class QueueController {
private static final String LISTENER_ID = "lister";
@Autowired
private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;
@GetMapping(path = "/"+LISTENER_ID+"/start")
public String start() {
MessageListenerContainer listenerContainer = rabbitListenerEndpointRegistry.getListenerContainer(LISTENER_ID);
listenerContainer.start();
return "started";
}
@GetMapping(path = "/"+LISTENER_ID+"/stop")
public String stop() {
MessageListenerContainer listenerContainer = rabbitListenerEndpointRegistry.getListenerContainer(LISTENER_ID);
listenerContainer.stop();
return "stopped";
}
//This getter and setter method,i have created for JUNIT.
public RabbitListenerEndpointRegistry getRabbitListenerEndpointRegistry() {
return rabbitListenerEndpointRegistry;
}
public void setRabbitListenerEndpointRegistry(RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry) {
this.rabbitListenerEndpointRegistry = rabbitListenerEndpointRegistry;
}
}
这是我的JUNIT
package com.compnay.depart.rest;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.core.MessageListener;
import org.springframework.amqp.rabbit.listener.MessageListenerContainer;
import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.springrunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.test.web.client.MockRestServiceServer;
import com.fasterxml.jackson.databind.ObjectMapper;
@RunWith(springrunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class,classes={ ObjectMapper.class})
public class QueueControllerTest
{
private MockRestServiceServer server;
@Autowired
public traceabilityRestTemplate restTemplate;
@MockBean
private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;
public QueueController filingListnerController = new QueueController();
@Before
public void init() {
server = MockRestServiceServer.bindTo(restTemplate).build();
}
@After
public void shutdown() {
server.reset();
}
@Test
public void testStart() {
when(rabbitListenerEndpointRegistry.getListenerContainer(anyString())).thenReturn(new MessageListenerContainer() {
@Override
public void stop() {
// Todo Auto-generated method stub
}
@Override
public void start() {
// Todo Auto-generated method stub
}
@Override
public boolean isRunning() {
// Todo Auto-generated method stub
return false;
}
@Override
public void setupMessageListener(MessageListener messageListener) {
// Todo Auto-generated method stub
}
@Override
public MessageConverter getMessageConverter() {
// Todo Auto-generated method stub
return null;
}
});
filingListnerController.setRabbitListenerEndpointRegistry(rabbitListenerEndpointRegistry);
String response = filingListnerController.start();
assertEquals("started",response);
}
@Test
public void testStop() {
when(rabbitListenerEndpointRegistry.getListenerContainer(anyString())).thenReturn(new MessageListenerContainer() {
@Override
public void stop() {
// Todo Auto-generated method stub
}
@Override
public void start() {
// Todo Auto-generated method stub
}
@Override
public boolean isRunning() {
// Todo Auto-generated method stub
return false;
}
@Override
public void setupMessageListener(MessageListener messageListener) {
// Todo Auto-generated method stub
}
@Override
public MessageConverter getMessageConverter() {
// Todo Auto-generated method stub
return null;
}
});
filingListnerController.setRabbitListenerEndpointRegistry(rabbitListenerEndpointRegistry);
String response = filingListnerController.stop();
assertEquals("stopped",response);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。