2015-07-07 3 views
0

Есть много хороших документов, которые рассматривают место тестирования модулей, например Android - Robolectric - Unit testing request location updates (LocationManager), но, к сожалению, не нашли ничего, что могло бы предложить провайдер местоположения. Поскольку я новичок в Robolectric, у меня все еще нет четкого представления о том, как это работает. Любая идея была бы оценена.Как установить поставщика тестового местоположения Robolectric?

Следующий код - метод, который у меня есть в моей деятельности. Я показываю cardView, если этот метод возвращает false, иначе он невидим. Поэтому я действительно хочу проверить видимость этого представления, но перед этим мне нужно высмеять провайдера местоположений, чтобы вернуть то, что я хочу. Это то, что я ищу на первом шаге. Благодаря

private boolean isLocationEnabled() 
    { 
     int locationMode = 0; 
     String locationProviders; 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
     { 
      try 
      { 
       locationMode = Settings.Secure.getInt(this.getContentResolver(), Settings.Secure.LOCATION_MODE); 

      } 
      catch (Settings.SettingNotFoundException e) 
      { 
       Logger.logException(e); 
      } 
      return locationMode != Settings.Secure.LOCATION_MODE_OFF; 
     } 
     else 
     { 
      locationProviders = Settings.Secure.getString(this.getContentResolver(), 
        Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
      return !TextUtils.isEmpty(locationProviders); 
     } 
    } 

ответ

2

Robolectric позволяет вызывать в значения Settings класса и набора:

Settings.Secure.putString(contentResolver, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "locationProvider"); 

Поместит то, что вы хотите там, и она должна вернуть то, что вы установили в тестах.

+0

wow, awesome Я этого не знал. Это мой пример для тех, кто ищет: «Settings.Secure.putInt (RuntimeEnvironment.application.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);' – Hesam

+0

Отлично! Благодарю. Это также помогло моему приложению обработать уведомления Android из модульных тестов с помощью Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS и имени пакета моих модульных тестов –