【问题标题】:Write/create file within Android Instrumentation context在 Android Instrumentation 上下文中写入/创建文件
【发布时间】: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


【解决方案1】:

我不记得这是什么时候更改的,但在仪器测试期间获取Context 对象的当前方法是导入

import android.support.test.InstrumentationRegistry;

然后打电话

InstrumentationRegistry.getContext();

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2020-06-03
    • 2023-03-06
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多