在Android Instrumentation上下文中编写/创建文件

时间:2014-03-28 13:45:58

标签: android testing android-context instrumentation

我有一个创建(或打开)文件的类来向其写入一些数据。该类在构造函数中接收Context,将其保存在实例字段中,然后使用它来调用context.openFileOutput方法。

运行应用程序时,我通过将ApplicationContext作为Context传递来实例化该类,并且一切都按预期工作。

但是,当我尝试使用Instrumentation Test测试此类时,我得到NullPointerException。我正在传递getInstrumentation().getContext()上下文,我知道该上下文对应于测试的上下文,而不是真正的应用程序。

getInstrumentation().getContext().openFileOutput("myFile", Context.MODE_PRIVATE); // This throws NullPointerException :( :(

在测试中,我需要在测试包中创建此文件,而不是在应用程序包中创建,因为我不想在我的应用程序中覆盖该文件。

我知道那里有一个RenamingDelegatingContext类,但我不能将这个上下文传递给我的类,因为我的类也打开了一个原始资源,我希望在运行测试时该资源不同(类似于一个模拟的资源)。

我对此进行了大量搜索,并且没有关于Instrumentation Context的文档。我无法找到它的局限性,也无法解决我的问题。

你知道怎么解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我无法回想起这个问题,但是在仪器化测试期间获取Context对象的当前方法是导入

import android.support.test.InstrumentationRegistry;

并致电

InstrumentationRegistry.getContext();

希望这有帮助!