使用Espresso on Emulator测试Android工作室中的Internet连接错误处理

问题描述 投票:6回答:1

我在Android Studios上使用Espresso在模拟器上测试我的应用程序的Instrumentation测试。我需要在测试中禁用互联网,以确保当用户没有互联网可用时我的错误处理功能正常工作。我已经搜索了一个简单的方法,以编程方式从模拟设备禁用互联网。这是我最接近的,这是行不通的。

        WifiManager wifiManager = (WifiManager) mActivityRule.getActivity().getSystemService(Context.WIFI_SERVICE);
        wifiManager.setWifiEnabled(false);

即使在@Before代码块中调用它也不会做任何事情,并且我还在AndroidManifest.xml文件中设置了必要的权限来更改wifi设置。

android android-espresso
1个回答
0
投票

我最近遇到了类似的问题。我们通过使用依赖注入解决了它,将逻辑注入为依赖。您可以注入WifiManager服务,因为它可能为null,但风险稍大,或者您可以注入处理逻辑的内容。

为了简化Java / Kotlin和DI库之间的差异,这个解决方案是伪代码:

public class AppHelper {
  public boolean isNetworkConnected(Context context) {
    // Do your check
    return isConnected;
  }
}

public class SomeActivity extends Activity {
  @Inject
  AppHelper appHelper;

  private void doNetworkStuff() {
    boolean connected = appHelper.isNetworkConnected(this);
    // implement your logic
  }
}

从那里,您可以模拟或操纵AppHelper的实例来实现您想要的结果。

编辑:为了记录,我不宽恕网络操作在Activity完成。这只是为了简化这个想法。

© www.soinside.com 2019 - 2024. All rights reserved.