Java 如何使用Junit测试Mqtt客户机而不运行它,而是使用模拟?
我用org.springframework.integration.mqtt.core.MqttPaho做了一个mqtt客户机。我遵循以下指南:springmqtt支持并正确工作,我从一个主题中阅读,在另一个主题中写作 现在我想用Junit5+mockito测试它。。我不太懂网络指南。。特别是如何模拟生产者或消费者。。我使用消费者和生产者类的配置,例如: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
@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;
}
}