android - 如何在 JUNIT 中模拟 WiFi 连接?

标签 android junit mocking wifi

使用 Android 并在设备上进行测试,我用它来检查 WiFI 是否已连接:

        ConnectivityManager manager = (ConnectivityManager) MyApplication.getMyApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    return info.isConnectedOrConnecting();

效果很好。有没有办法为 JUnit 模拟这个?

提前致谢, 马库斯

最佳答案

如果您将代码移动到您自己的 WifiServiceClass 中并让您的应用程序依赖于接口(interface),您可以模拟此功能:

public class MyClassThatRequiresWifi {
    private IWifiService wifiService;
    public MyClassThatRequiresWifi(IWifiService wifiService) {
        this.wifiService = wifiService;
    }

    public void someMethodThatNeedsWifi() {
        if (this.wifiService.isConnectedOrConnecting())
            ...
    }
}

public IWifiService {
    boolean isConnectedOrConnecting();
}

public WifiService implements IWifiService {
    boolean isConnectedOrConnecting() {..}
}

关于android - 如何在 JUNIT 中模拟 WiFi 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912579/

相关文章:

android - 从首选项打开的文件选择器 Intent

java - Mule - JUnit 发送请求 - 最佳实践

testing - JUnit 自己的示例测试失败?

node.js - 用 nock 模拟一个开放的网络套接字

c# - 模拟内部函数的响应但测试外部函数

具有许多选项卡的 Android 选项卡布局

Android adb 备份无法连接问题

android - onTouch 在按下后退按钮时再次触发

java - 重定向 URL 应为 : </> but was<null> in Junit

ios - 在 Storyboard 中定义的模拟 UIViewController