我在 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 at android.net.wifi.WifiManager.startScan(WifiManager.java:995)
如何在我的应用程序类中不注释这些行的情况下运行我的测试??
谢谢大家!
最佳答案
我尝试重现错误并发现相同。我在想你应该先设置 WifiManager
才能开始使用它。然而问题更深。
Robolectric 有 WifiManager
的影子类,它被返回给你但是 startScan()
方法没有被影子并且试图调用真实的来自 Android 的类。如果您查看源代码,可以看到 service
字段,即 WiFi 详细信息的实现,在真实类中,并且在使用 Robolectric 运行时为 null。
我在 Robolectric github 上创建了问题 https://github.com/robolectric/robolectric/issues/1969
关于android - Robolectric:wifi 启动扫描的启动测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718177/