Robolectric:启动测试导致wifi启动扫描失败

时间:2015-07-30 07:57:22

标签: android android-wifi robolectric

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

public class MyApplication extends Application {

private void setupApplication() {

....

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

}

此类“NetworkEvents”允许测试互联网连接。在这堂课中有这样的召唤:

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

问题是开始wifi扫描......

这是错误:

  

显示java.lang.NullPointerException       在android.net.wifi.WifiManager.startScan(WifiManager.java:995)

如何在我的应用程序类中不对这些行进行注释的情况下运行我的测试?

谢谢你们!

1 个答案:

答案 0 :(得分:1)

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

Robolectric WifiManager的影子类,它会返回给你,但startScan()方法没有被遮蔽,并且正在尝试从 Android中调用真正的类。如果您查看来源有service字段,实际上是WiFi详细信息的实现,并且在使用 Robolectric 运行时为null。

我在 Robolectric github https://github.com/robolectric/robolectric/issues/1969上创建了问题