Robolectric: wifi 开始扫描的开始测试失败

Robolectric: failed on start test cause of wifi start scan

我在 Robolectric 下创建了一个小测试。不幸的是,我必须评论这些行才能成功测试:

public class MyApplication extends Application {

private void setupApplication() {

....

//mNetworkEvents = new NetworkEvents(this, EventBus.getDefault())
//            .withPingUrl(BuildConfig.PING_SERVER_URL)
//            .withPingTimeout(BuildConfig.PING_TIMEOUT);

}

此 class "NetworkEvents" 允许测试互联网连接。在这个 class 中有这个调用:

public static void startWifiScan(Context context) {
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    wifiManager.startScan();
}

问题是开始 wifi 扫描...

这是错误:

java.lang.NullPointerException at android.net.wifi.WifiManager.startScan(WifiManager.java:995)

如何在我的应用程序 class 中不注释这些行来进行 运行 测试??

谢谢大家!

我尝试重现错误并发现相同。我在想你应该先设置 WifiManager 才能开始使用它。然而问题更深。

RobolectricWifiManager 有影子 class 并且返回给你但是 startScan() 方法没有影子并且正在尝试从 Android 调用真实的 class。如果您查看来源,则有 service 字段,即 WiFi 详细信息的实现,实际上 class 并且当 运行 Robolectric[ 时为空=25=].

我在 Robolectric github https://github.com/robolectric/robolectric/issues/1969

上创建了问题