正在尝试模拟Environment.getExternalStorageState



在单元测试我的Android应用程序时,我已经想了几个小时如何模拟对Environment.getExternalStorateState()的调用。

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

如果能得到一些帮助,我将不胜感激。

您可以围绕这个调用编写helper,并在以下位置轻松地模拟它(很抱歉类名中有helper部分):

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

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

ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED);

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

我刚刚在我的测试助手类中完成了对Environment方法的调用,这样我就可以根据每个测试用例中可以根据需要设置的变量来模拟SD卡的状态。我认为最好的解决方案。

相关内容

  • 没有找到相关文章