使用ActivityUnitTestCase和PreferenceManager对Android进行单元测试

jac*_*ted 7 android unit-testing sharedpreferences

我有一个Activity单元测试.我想单独测试Activity,所以ActivityUnitTestCase非常适合我的目的.

onCreate我的方法Activity使用存储在首选项中的值.我想在我的测试用例中为此设置一个值.

问题是我无法弄清楚如何Preference提前设定.在我调用之前,没有一个getContext()方法ActivityUnitTestCase,并且getActivity()应该返回a context,为null startActivity().这不是一个选项,因为调用startActivity将触发该onCreate方法,这是首选项代码所在的位置.

有关如何获得context可用于操作单元测试的首选项的任何想法?

小智 9

您可以通过仪器获取上下文.

获取检测的上下文(测试运行器):

getInstrumentation().getContext()
Run Code Online (Sandbox Code Playgroud)

但是您可能需要已检测应用程序的上下文:

getInstrumentation().getTargetContext()
Run Code Online (Sandbox Code Playgroud)