I am using Robolectric to test my Android app. The app uses the AndroidBeaconLibrary.
When i use
Activity activity = Robolectric.setupActivity(MainActivity.class);
as a simple test, I get an error in the onBeaconServiceConnect()
method:
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
final double distance = beacons.iterator().next().getDistance();
Log.i("X", "The beacon is about " + distance + " meters away.");
if (distance > 1.8 && !mAlertShown) {
mAlertShown = true;
alertOpen();
} else if (distance < 1) {
mAlertShown = false;
Toast.makeText(MainActivity.this, "alert is now reset", Toast.LENGTH_SHORT).show();
}
}
}
});
try {
Identifier i = Identifier.parse("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
Identifier i2 = Identifier.parse("xxxx");
beaconManager.startRangingBeaconsInRegion(new Region("rangingUniqueId", i, i2, null));
} catch (RemoteException e) {
}
}
The method fails after calling beaconManager.startRangingBeaconsInRegion(new Region("rangingUniqueId", i, i2, null));
at this.serviceMessenger.send(msg);
in the BeaconManager.class
. with a NullPointerException
.
When I deploy the app on my phone, everything works just fine.