在单元测试我的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卡的状态。我认为最好的解决方案。