我想在Android Studio中对Mqtt客户端模块进行单元测试,因为我想将数据从Android设备发送到PC,但我不知道如何在没有真实服务器的情况下测试,我正在使用paho库。有办法做到这一点?
您不能使用paho库来模拟代理,但是有一些moquette broker(https://github.com/moquette-io/moquette),您可以使用它来在现有Java应用程序中嵌入代理
是的,在Mac,Linux或Windows计算机上使用Android Studio和Android Emulator进行开发时,可以轻松执行本地离线测试 -
首先安装mosquitto并在localhost上运行代理(在Windows上只需双击mosquitto.exe
,在Linux / Mac上运行终端窗口中的./mosquitto
)。
然后打开另一个终端窗口并通过运行来订阅所有主题:
./mosquito_sub -v -t "#"
或者在cmd窗口的Windows上:
mosquito_sub.exe -v -t "#"
最后在Java源代码中,在模拟器中运行时更改URL:
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/";