提问人:mato 提问时间:3/28/2014 最后编辑:Brian Tompsett - 汤莱恩mato 更新时间:9/16/2023 访问量:1715
在 Android Instrumentation 上下文中写入/创建文件
Write/create file within Android Instrumentation context
问:
我有一个类,它创建(或打开)一个文件以向其写入一些数据。此类在构造函数中接收 Context,将其保存在实例字段中,然后使用它来调用 context.openFileOutput 方法。
运行应用程序时,我通过将 ApplicationContext 作为 Context 传递来实例化此类,一切都按预期工作。
但是,当我尝试使用 Instrumentation Test 测试此类时,我得到一个 .我正在传递上下文,我知道它对应于测试的上下文,而不是真正的应用程序的上下文。NullPointerException
getInstrumentation().getContext()
getInstrumentation().getContext().openFileOutput("myFile", Context.MODE_PRIVATE); // This throws NullPointerException :( :(
在测试中,我需要在测试包中创建此文件,而不是在应用包中创建此文件,因为我不想覆盖应用中的文件。
我知道那里有一个类,但我无法将此上下文传递给我的类,因为我的类也打开了一个原始资源,并且我希望该资源在运行测试时有所不同(类似于模拟资源)。RenamingDelegatingContext
我搜索了很多关于这方面的内容,但没有关于 Instrumentation Context 的文档。我找不到它的局限性,也找不到任何能解决我问题的东西。
你知道如何解决这个问题吗?
答:
-2赞
Will Passidomo
8/22/2017
#1
我不记得这是什么时候更改的,但是在插桩测试期间获取对象的当前方法是导入Context
import android.support.test.InstrumentationRegistry;
并调用
InstrumentationRegistry.getContext();
希望这有帮助!
评论