Android 如何通过Robolectric对位置提供者进行单元测试?

Android 如何通过Robolectric对位置提供者进行单元测试?,android,unit-testing,robolectric,Android,Unit Testing,Robolectric,有很多关于单元测试位置的好文档,例如,但不幸的是,没有找到任何关于位置提供者的文档。由于我是新来的机器人分子,我仍然不清楚它是如何工作的。任何想法都将不胜感激 下面的代码是我在活动中使用的方法。如果此方法返回false,我将显示cardView,否则它不可见。所以我实际上想测试这个视图的可见性,但在此之前,我需要模拟位置提供程序来返回我想要的。这是我第一步要找的东西。谢谢 private boolean isLocationEnabled() { int location

有很多关于单元测试位置的好文档,例如,但不幸的是,没有找到任何关于位置提供者的文档。由于我是新来的机器人分子,我仍然不清楚它是如何工作的。任何想法都将不胜感激

下面的代码是我在活动中使用的方法。如果此方法返回false,我将显示cardView,否则它不可见。所以我实际上想测试这个视图的可见性,但在此之前,我需要模拟位置提供程序来返回我想要的。这是我第一步要找的东西。谢谢

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);
        }
    }

Robolectric允许您调用
设置
类并设置值:

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

将所需内容放入其中,它将返回您在测试中设置的内容。

Robolectric允许您调用
设置
类并设置值:

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

把你想要的东西放进去,它就会返回你在测试中设置的东西。

哇,太棒了,我不知道。这是我为正在寻找的人准备的示例:
Settings.Secure.putInt(RuntimeEnvironment.application.getContentResolver(),Settings.Secure.LOCATION\u MODE,Settings.Secure.LOCATION\u MODE\u HIGH\u准确性)太好了!谢谢这也使我的应用程序能够通过设置处理来自单元测试的Android通知。操作\u通知\u侦听器\u设置和我的单元测试包名Perfect感谢这个回答哇,太棒了,我不知道。这是我为正在寻找的人准备的示例:
Settings.Secure.putInt(RuntimeEnvironment.application.getContentResolver(),Settings.Secure.LOCATION\u MODE,Settings.Secure.LOCATION\u MODE\u HIGH\u准确性)太好了!谢谢这也使我的应用程序能够通过设置处理单元测试的Android通知。操作\通知\侦听器\设置和我的单元测试包名Perfect感谢您的回答