如何禁用/启用网络,切换到Android模拟器中的Wifi?

mtb*_*ave 29 testing networking android unit-testing

我正在开发一个针对Android的推送通知库(http://deaconproject.org/),如果网络连接中断或更改,它需要采取措施 - 即,它需要重新启动服务器连接或暂停其操作,直到网络连接可用.对于"android.net.ConnectivityManager.CONNECTIVITY_ACTION",这似乎可以正常使用Android BroadcastReceiver.

我的问题在于测试库 - 我想在各种配置条件下自动测试库对网络连接断开的响应,或从3G到WiFi的转换.问题是,我不想和模拟器坐在一起并整天打F8.

有没有办法在jUnit测试中以编程方式操作Android上的网络连接,而无需转换飞机模式?我已经尝试通过控制台向模拟器发出命令,操作GSM模式等,但是当显示器上的手机状态发生变化时,互联网连接仍然保持通信状态.

小智 7

右键单击"Project Explorer"面板中的项目,选择"Run As",然后选择"Run Configurations".

在模态显示的窗口的左侧选择"Android应用程序",在同一窗口的右侧,选择"目标"选项卡.

在窗口的底部,在"模拟器启动参数"部分中,您有很多关于互联网连接的选项.

我希望这有帮助.

伊戈尔

  • 谢谢你的回答 - 这是朝着正确方向迈出的一步.模拟器启动参数可以在启动时调整网络连接,但我们正在寻找一种在运行时以编程方式执行此操作的方法."正在测试"的库必须响应Android Broadcast Intents(例如android.net.ConnectivityManager.CONNECTIVITY_ACTION),以便将其状态调整为设备的网络状态.我们需要的是一种从JUnit测试中改变网络状态的方法,这样我们就可以验证Intent是否被接收并采取适当的行动...... (8认同)

San*_*uys 6

我发现Android Dev Tools应用确实非常有用.

它允许您操作重要的系统设置,如网络连接.它甚至允许您设置一个自动打开和关闭wifi的时间间隔,从而允许您测试网络相关的广播接收器.

如果您想在真实开发设备上安装Dev Tools应用程序,可以从模拟器复制应用程序,然后使用ADB将其安装到您的设备上.要从正在运行的模拟器中复制应用程序,请执行:

adb -e pull /system/app/Development.apk ./Development.apk
Run Code Online (Sandbox Code Playgroud)

这会将.apk文件复制到当前目录中.然后将其安装在您连接的设备上:

adb -d install Development.apk
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这对于那些希望手动操作网络状态的人很有帮助,但这里的问题是寻找一种以编程方式(即从单元测试中)这样做的方法.可以使用发送到Dev Tools应用程序的意图来完成吗? (4认同)