可以通过robotium在测试用例中打开/关闭wifi

时间:2012-12-03 10:50:41

标签: android robotium

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

4 个答案:

答案 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。