试图模拟Environment.getExternalStorageState

Jai*_*ime 7 environment android unit-testing mocking mockito

我一直在试图弄清楚如何Environment.getExternalStorateState()在单元测试我的Android应用程序时模拟调用.

我已经能够模拟SystemServices,Providers和Services,但我无法弄清楚如何模拟这个调用,因为它不是对我的上下文中提供的东西的调用,而是OS环境中的某些东西.

会对一些帮助表示感谢.

Eug*_*nov 9

您可以围绕此调用编写帮助程序并在之后轻松模拟它(抱歉在类名中包含帮助程序部分):

public class EnvironmentHelper {
    public String getStorageState() {
        return Environment.getExternalStorateState();
    }     
}
Run Code Online (Sandbox Code Playgroud)

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

ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED);
Run Code Online (Sandbox Code Playgroud)

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