如何通过Robolectric单元测试位置提供?(How to unit test location

2019-10-23 16:29发布

有很多很好的文档方面的单元测试地点如Android的- Robolectric -单元测试请求位置更新(的LocationManager) ,但遗憾的是没有找到任何关于位置提供。 由于我是新来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);
        }
    }

Answer 1:

Robolectric让你调入Settings类,并设定值:

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

把你想在那里什么,它应该返回您在测试中设定的。



文章来源: How to unit test location provider by Robolectric?