Tests: ServiceTestRule does not (always) restart the service.

Thus, resetting it's status is not happening and then leading to failures in subsequent tests.

Fixes #1058.
This commit is contained in:
Dennis Guse
2021-12-27 23:33:02 +01:00
parent d6cc7a0321
commit 7d0d87e962
6 changed files with 54 additions and 84 deletions
@@ -99,7 +99,10 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
}
};
private final OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
@Deprecated
//TODO Workaround as service is not stopped on API23; thus sharedpreferences are not reset between tests.
@VisibleForTesting
final OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (PreferencesUtils.isKey(R.string.stats_units_key, key)) {
@@ -149,21 +152,13 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
PreferencesUtils.registerOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public Binder onBind(Intent intent) {
return binder;
}
@Override
public void onDestroy() {
handler.removeCallbacksAndMessages(null); //Some tests do not finish the recording completely
handler = null;
PreferencesUtils.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
trackPointCreator.stop();
trackPointCreator = null;
trackRecordingManager = null;
@@ -172,8 +167,6 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
showNotification(false); //TODO Why?
notificationManager = null;
PreferencesUtils.unregisterOnSharedPreferenceChangeListener(sharedPreferenceChangeListener);
try {
voiceAnnouncementManager.shutdown();
} finally {
@@ -435,6 +428,12 @@ public class TrackRecordingService extends Service implements TrackPointCreator.
return trackPointCreator;
}
@Deprecated
@VisibleForTesting
public TrackRecordingManager getTrackRecordingManager() {
return trackRecordingManager;
}
public LiveData<GpsStatusValue> getGpsStatusObservable() {
return gpsStatusObservable;
}