android - 试图模拟 Environment.getExternalStorageState

标签 android unit-testing mocking mockito environment

几个小时以来,我一直在努力弄清楚如何在对我的 Android 应用程序进行单元测试时模拟对 Environment.getExternalStorateState() 的调用。

我已经能够模拟 SystemServices、Providers 和 Services,但我不知道如何模拟这个调用,因为它不是对我上下文中提供的东西的调用,而是对操作系统环境中的东西的调用。

如有帮助,将不胜感激。

最佳答案

你可以围绕这个调用编写 helper 并在之后轻松模拟它(很抱歉在类名中有 helper 部分):

public class EnvironmentHelper {
    public String getStorageState() {
        return Environment.getExternalStorateState();
    }     
}

或者,如果您使用 Robolectric,您可以调用:

ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED);

这取决于您的设置和需求,但我建议投资于 Robolectric 使用

关于android - 试图模拟 Environment.getExternalStorageState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20356290/

相关文章:

java - Android Java 静态泛型调用

android - appwidget 卡住并拒绝更新 : ignores updateAppWidget

mocking - 生成的服务模拟 : everything but RhinoMocks fails?

android - 在启动所有单元测试之前调用 startKoin() 并在所有测试完成后调用 stopKoin()

php - 如何在 Laravel 中基于 application/json header 加载路由

java - DoReturn 抛出 UnfinishedStubbingException

c# - 如何在 .NET 测试中传入模拟的 HttpClient?

java - 如何操作位图中的像素?

android - 错误 :Cause: invalid stream header: 000900D9 in android studio 2. 3.1

php - 如何使用 Laravel Input::replace() 测试 POST 请求