Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 如何使用Junit测试Mqtt客户机而不运行它,而是使用模拟?_Java_Spring_Spring Boot_Junit_Mqtt - Fatal编程技术网

Java 如何使用Junit测试Mqtt客户机而不运行它,而是使用模拟?

Java 如何使用Junit测试Mqtt客户机而不运行它,而是使用模拟?,java,spring,spring-boot,junit,mqtt,Java,Spring,Spring Boot,Junit,Mqtt,我用org.springframework.integration.mqtt.core.MqttPaho做了一个mqtt客户机。我遵循以下指南:springmqtt支持并正确工作,我从一个主题中阅读,在另一个主题中写作 现在我想用Junit5+mockito测试它。。我不太懂网络指南。。特别是如何模拟生产者或消费者。。我使用消费者和生产者类的配置,例如: @Configuration public class Consumer { @Autowired MqttPahoClientFactory

我用org.springframework.integration.mqtt.core.MqttPaho做了一个mqtt客户机。我遵循以下指南:springmqtt支持并正确工作,我从一个主题中阅读,在另一个主题中写作

现在我想用Junit5+mockito测试它。。我不太懂网络指南。。特别是如何模拟生产者或消费者。。我使用消费者和生产者类的配置,例如:

@Configuration
public class Consumer {
@Autowired MqttPahoClientFactory mqttClientFactory;
@Bean
public MessageChannel topicChannel(){
    return new DirectChannel();
}

@Bean
public MessageProducer mqttInbound() {
    MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(
            Parameters.MQTT_CLIENT_ID, mqttClientFactory, Parameters.TOPICS[0]);
    adapter.setCompletionTimeout(5000);
    adapter.setConverter(new DefaultPahoMessageConverter());
    adapter.setQos(1);
    adapter.setOutputChannel(topicChannel());
    return adapter;
}
}

and

@Configuration
public class Producer {
    @Autowired MqttPahoClientFactory mqttClientFactory;
    @Bean
    public MessageChannel mqttOutboundChannel(){
        return new DirectChannel();
    }
    @MessagingGateway(defaultRequestChannel = "mqttOutboundChannel")
    public interface ProducerGateway {
        void sendToMqtt(String data, @Header(MqttHeaders.TOPIC) String topic);
    }
    @Bean
    @ServiceActivator(inputChannel = "mqttOutboundChannel")
    public MessageHandler mqttOutbound() {
        MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler(
                Parameters.MQTT_CLIENT_ID,
                mqttClientFactory);
        messageHandler.setAsync(true);
        messageHandler.setLoggingEnabled(true);
        return messageHandler;
    }
}

@Configuration
public class MqttConfiguration {

    @Bean
    public MqttPahoClientFactory mqttClientFactory() {
        DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
        MqttConnectOptions options = new MqttConnectOptions();
        options.setServerURIs(Parameters.BROKER_URIs);
        options.setUserName(Parameters.MQTT_USERNAME);
        options.setPassword(Parameters.MQTT_PASSWORD.toCharArray());
        factory.setConnectionOptions(options);
        return factory;
    }

}