7

我们可以在机器人测试用例中打开/关闭设备的 wi-fi 吗?因为我正在测试一个需要在初始阶段打开 wifi 然后关闭 wi-fi 并继续测试的问题。

4

4 回答 4

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(请参阅文档

享受

于 2014-10-14T09:38:14.410 回答
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 的状态

于 2012-12-08T18:36:04.873 回答
1

因为,您将测试您知道应用程序行为(wifi 开启和 wifi 关闭时)的应用程序,您可以相应地模拟数据。模拟数据将使应用程序在特定情况下按预期运行。

于 2012-12-05T03:45:37.560 回答
0

没有一种简单的方法可以做到这一点,这与我说这是不可能的不同,但可能足以阻止你这样做。

如果您的应用程序具有正确的权限,那么您实际上可以从您的 robotsium 脚本打开或关闭 wifi,就像任何应用程序一样。但请记住,权限需要在您的应用程序清单中,而不是您的测试 apk 清单中。

如果您的应用程序没有正确的权限(并且您不愿意更改它),还有另一种方法,但需要做很多工作(努力获得我使用的开源解决方案)。创建一个具有服务权限的应用程序,在您的测试中绑定到该服务并要求该服务关闭 wifi。

于 2012-12-03T15:35:09.153 回答