我们可以在机器人的测试案例中打开/关闭设备的Wi-Fi吗? 因为我正在测试一个问题,需要在初始阶段启用wifi,然后关闭Wi-Fi并继续测试。
答案 0 :(得分:3)
是的,你可以这样做,见例:
public void 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(布尔值打开)打开或关闭wifi(请参阅documentation)
享受
答案 1 :(得分:2)
您可以使用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状态的权限
答案 2 :(得分:1)
因为,您将测试应用程序中您知道应用程序的行为(当wifi打开和wifi关闭时)的应用程序,您可以相应地模拟数据。 模拟数据将使应用程序在特定情况下按预期运行。
答案 3 :(得分:0)
没有一种简单的方法可以做到这一点,这与我说的不一样,虽然但这可能足以阻止你这样做。
如果您的应用程序具有正确的权限,那么您可以从您的robotium脚本实际上打开或关闭wifi,就像任何应用程序一样。但请记住,权限需要在您的应用程序清单中,而不是您的测试apk清单。
如果您的应用程序没有正确的权限(并且您不愿意更改它),还有另一种方法,但需要做很多工作(努力获得我使用开源的解决方案)。创建一个具有权限作为服务的应用程序,绑定到测试中的该服务,并要求该服务关闭wifi。