mat*_*ato 18 testing instrumentation android android-context
我有一个类创建(或打开)一个文件来写一些数据.此类在构造函数中接收Context,将其保存在实例字段中,然后使用它来调用context.openFileOutput方法.
在运行应用程序时,我通过将ApplicationContext作为Context传递来实例化该类,并且一切都按预期工作.
但是,当我尝试使用Instrumentation Test测试这个类时,我得到了一个NullPointerException.我正在传递getInstrumentation().getContext()上下文,我知道该上下文对应于测试的上下文,而不是真正的应用程序.
getInstrumentation().getContext().openFileOutput("myFile", Context.MODE_PRIVATE); // This throws NullPointerException :( :(
Run Code Online (Sandbox Code Playgroud)
在测试中,我需要在测试包中创建此文件,而不是在应用程序包中创建,因为我不想覆盖我的应用程序中的文件.
我知道那里有一个RenamingDelegatingContext类,但我不能将这个上下文传递给我的类,因为我的类也打开了一个原始资源,我希望在运行测试时这个资源不同(类似于模拟资源).
我对此进行了大量搜索,并且没有关于Instrumentation Context的文档.我无法找到它的局限性,也无法解决我的问题.
你知道如何解决这个问题吗?
小智 -2
我不记得什么时候改变了,但Context在仪器测试期间获取对象的当前方法是导入
import android.support.test.InstrumentationRegistry;
并打电话
InstrumentationRegistry.getContext();
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |