可以在 Android Studio 中模拟 MQTT 代理吗?

It is possible to mock a MQTT broker in Android Studio?

我想在 Android Studio 中对 Mqtt 客户端模块进行单元测试,因为我想将数据从 Android 设备发送到 PC,但我不知道如何在没有真实服务器的情况下测试,我正在使用 paho 库。有办法吗?

是的,在 Mac、Linux 或 Windows 上使用 Android Studio 和 Android 模拟器进行开发时,很容易执行本地离线测试计算机 -

首先在本地主机上安装 mosquitto 和 运行 代理(在 Windows 上只需双击 mosquitto.exe,在 Linux/Mac 运行 ./mosquitto 在终端 window).

然后打开另一个终端window并通过运行ning订阅所有主题:

./mosquito_sub -v -t "#"

或在命令 Windows 上 window:

mosquito_sub.exe -v -t "#"

最后在您的 Java 源代码中更改 URL when 运行ning in the emulator:

public static boolean isEmulator() {
    return (Build.PRODUCT != null && Build.PRODUCT.toLowerCase().contains("sdk")) ||
            (Build.MODEL != null && Build.MODEL.toLowerCase().contains("sdk"));
}

private static final String BROKER_URL = 
    isEmulator() ? "tcp://10.0.2.2/" : "tcp://test.mosquitto.org/";

您不能使用 paho 库来模拟代理,但是可以使用 moquette 代理 (https://github.com/moquette-io/moquette) 将代理嵌入现有的 Java 应用程序