我正在使用InstrumentationTestCase类来对活动中的某些内容进行单元测试.
在启动此活动之前,我需要能够检查SharedPreferences的内容并对其进行编辑.
我无法使用setUp方法创建Activity并访问它的SharedPreferences对象进行编辑,然后在完成setUp方法之前关闭该活动,因为它显然是锁定测试处理.
在我在测试中启动活动之后,我也无法访问SharedPreferences,因为一旦Activity启动,它就会在我有机会获得它之前更改SharedPreferences对象并按照它行动.
我之前显然无法访问SharedPreferences,因为我没有Activity对象......而且一旦我这样做,它就已经在执行代码并被启动了......
所以,我的问题是,在我通过Intent实际创建Activity之前,有没有办法访问此Activity的SharedPreferences(和任何其他Activity信息)?
我无法将其更改为ActivityInstrumentationTestCase2,因为我的测试在其进程中使用了第二个活动,因此我不能只更改为此类并使用它的setUp()方法来访问SharedPreferences.
我找到了最简单的方法,只需通过检测,而无需编辑应用程序的体系结构或任何访问属性.
我通过这个实现了它:
Instrumentation instrumentation = getInstrumentation();
instrumentation.getTargetContext().getSharedPreferences(..);
Run Code Online (Sandbox Code Playgroud)
这样我可以在检测启动任何Activity之前访问SharedPreferences.
无论如何,感谢所有帮助,提示和其他替代方案.
| 归档时间: |
|
| 查看次数: |
2707 次 |
| 最近记录: |