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
才能开始使用它。然而问题更深。
Robolectric 对 WifiManager
有影子 class 并且返回给你但是 startScan()
方法没有影子并且正在尝试从 Android 调用真实的 class。如果您查看来源,则有 service
字段,即 WiFi 详细信息的实现,实际上 class 并且当 运行 Robolectric[ 时为空=25=].
我在 Robolectric github https://github.com/robolectric/robolectric/issues/1969
上创建了问题
我在 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
才能开始使用它。然而问题更深。
Robolectric 对 WifiManager
有影子 class 并且返回给你但是 startScan()
方法没有影子并且正在尝试从 Android 调用真实的 class。如果您查看来源,则有 service
字段,即 WiFi 详细信息的实现,实际上 class 并且当 运行 Robolectric[ 时为空=25=].
我在 Robolectric github https://github.com/robolectric/robolectric/issues/1969
上创建了问题