试图模拟Environment.getExternalStorageState

时间:2013-12-03 16:19:27

标签: android unit-testing mocking mockito environment

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

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

感谢一些帮助。

2 个答案:

答案 0 :(得分:9)

你可以在这个电话周围写一个帮手,然后轻松地模仿它(抱歉在课堂名称中有帮助部分):

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

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

ShadowEnvironment.setExternalStorageState(Environment.MEDIA_MOUNTED);

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

答案 1 :(得分:0)

我只是在我的测试帮助程序类中解决了对Environment方法的调用问题,因此我可以根据我想要的变量模拟SD卡的状态,这取决于我在每个测试用例中可以设置的变量。 我认为最佳解决方案。