【发布时间】:2014-05-08 00:29:50
【问题描述】:
我有一个类可以创建(或打开)一个文件以向其中写入一些数据。该类在构造函数中接收一个 Context,将其保存在实例字段中,然后使用它调用 context.openFileOutput 方法。
在运行应用程序时,我通过将 ApplicationContext 作为 Context 来实例化这个类,一切都按预期工作。
但是,当我尝试使用 Instrumentation Test 测试这个类时,我得到了 NullPointerException。我正在传递 getInstrumentation().getContext() 上下文,我知道它对应于测试的上下文,而不是真正的应用程序。
getInstrumentation().getContext().openFileOutput("myFile", Context.MODE_PRIVATE); // This throws NullPointerException :( :(
在测试中,我需要在测试包而不是应用包中创建此文件,因为我不想覆盖我的应用中的文件。
我知道那里有一个 RenamingDelegatingContext 类,但我无法将此上下文传递给我的类,因为我的类还打开了一个原始资源,并且我希望该资源在运行测试时有所不同(类似于模拟资源)。
我对此进行了很多搜索,但没有关于 Instrumentation Context 的文档。我找不到它的局限性,也找不到任何能解决我问题的东西。
你知道如何解决这个问题吗?
【问题讨论】:
-
您找到解决方案了吗?
标签: android testing android-context instrumentation