我们可以在机器人测试用例中打开/关闭设备的 wi-fi 吗?因为我正在测试一个需要在初始阶段打开 wifi 然后关闭 wi-fi 并继续测试的问题。
4 回答
是的,您可以这样做,请参见示例:
公共无效 testNoNetworkConnection() 抛出异常 {
setWifiEnabled(false); // do stuff solo.something setWifiEnabled(true); } private void setWifiEnabled(boolean state) { WifiManager wifiManager = (WifiManager)solo.getCurrentActivity().getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(state); }
请记住在您的清单文件中添加权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
编辑:使用新的 Robotium 5.3.1,您可以使用setWiFiData(Boolean turnOn)打开或关闭 wifi(请参阅文档)
享受
您可以使用 Testdroid 提供的 ExtSolo。库可以在https://github.com/bitbar/robotium-extensions和所需方法的 api 上找到:打开 wifi。如果您不想使用额外的库,可以使用如下代码:
protected void turnWifi(boolean enabled) {
try {
WifiManager wifiManager = (WifiManager) getInstrumentation()
.getTargetContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(enabled);
} catch (Exception ignored) {
// don't interrupt test execution, if there
// is no permission for that action
}
}
您需要在应用程序中获得权限才能更改 Wifi 的状态
因为,您将测试您知道应用程序行为(wifi 开启和 wifi 关闭时)的应用程序,您可以相应地模拟数据。模拟数据将使应用程序在特定情况下按预期运行。
没有一种简单的方法可以做到这一点,这与我说这是不可能的不同,但可能足以阻止你这样做。
如果您的应用程序具有正确的权限,那么您实际上可以从您的 robotsium 脚本打开或关闭 wifi,就像任何应用程序一样。但请记住,权限需要在您的应用程序清单中,而不是您的测试 apk 清单中。
如果您的应用程序没有正确的权限(并且您不愿意更改它),还有另一种方法,但需要做很多工作(努力获得我使用的开源解决方案)。创建一个具有服务权限的应用程序,在您的测试中绑定到该服务并要求该服务关闭 wifi。