Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RabbitListenerTestHarness出现问题,无法工作_Java_Spring_Rabbitmq_Junit5_Spring Amqp - Fatal编程技术网

Java RabbitListenerTestHarness出现问题,无法工作

Java RabbitListenerTestHarness出现问题,无法工作,java,spring,rabbitmq,junit5,spring-amqp,Java,Spring,Rabbitmq,Junit5,Spring Amqp,我试图嘲笑@RabbitListener。为此,我使用RabbitListenerTestHarness,但这似乎不起作用。 下面是我的项目结构 主类 @Component public class ABC { @Autowired private AmqpTemplate amqpTemplate; @RabbitListener(id="id", queues="${queue}") public void receiveMessage(Stri

我试图嘲笑@RabbitListener。为此,我使用RabbitListenerTestHarness,但这似乎不起作用。 下面是我的项目结构

主类

@Component
public class ABC {

@Autowired
private AmqpTemplate amqpTemplate;

@RabbitListener(id="id", queues="${queue}")
 public void receiveMessage(String message) {
publishMsg(message);      
}

public void publishMsg(String msg){
    amqpTemplate.convertAndSend("exchange", "",msg); 
}

}
@RunWith(SpringRunner.class)
@SpringBootTest
public class ABCTest {

@Autowired
private RabbitListenerTestHarness harness; 

@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendtoQueue() throws Exception {
    ABC listener = this.harness.getSpy("id");
    assertNotNull(listener);

    LatchCountDownAndCallRealMethodAnswer answer = this.harness.getLatchAnswerFor("id", 1); 
    doAnswer(answer).when(listener).receiveMessage(any(String.class)); 

    String data = getMockString("src/test/resources/rabbitMQ-data.json");
    
    this.rabbitTemplate.convertAndSend("Queue-name", data);

    //assertTrue(answer.await(10));
   verify(listener,times(1)).receiveMessage("data");
}
测试类

@Component
public class ABC {

@Autowired
private AmqpTemplate amqpTemplate;

@RabbitListener(id="id", queues="${queue}")
 public void receiveMessage(String message) {
publishMsg(message);      
}

public void publishMsg(String msg){
    amqpTemplate.convertAndSend("exchange", "",msg); 
}

}
@RunWith(SpringRunner.class)
@SpringBootTest
public class ABCTest {

@Autowired
private RabbitListenerTestHarness harness; 

@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendtoQueue() throws Exception {
    ABC listener = this.harness.getSpy("id");
    assertNotNull(listener);

    LatchCountDownAndCallRealMethodAnswer answer = this.harness.getLatchAnswerFor("id", 1); 
    doAnswer(answer).when(listener).receiveMessage(any(String.class)); 

    String data = getMockString("src/test/resources/rabbitMQ-data.json");
    
    this.rabbitTemplate.convertAndSend("Queue-name", data);

    //assertTrue(answer.await(10));
   verify(listener,times(1)).receiveMessage("data");
}
}

在上面运行时,它给出如下错误

Wanted but not invoked:
customPublisherSubscriber.receiveMessageFromResponseQ(
"data"
);
-> at aero.sita.sp.spm.service.ABC.testSendtoQueue(CustomPublisherSubscriberTest.java:67)
Actually, there were zero interactions with this mock.

at aero.sita.sp.spm.service.ABC.testSendtoQueue(CustomPublisherSubscriberTest.java:67)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
我指的是


我正在努力理解,因为我正在尝试验证spy对象是否接收到消息,但它正在报告与mock对象相关的问题。请您在这方面协助我。

您缺少启用线束所需的
@RabbitListenerTest

而且

在您的测试或代码中,我看不到对该方法的任何引用