Запись/создание файла в контексте инструментария инструментария

У меня есть класс, который создает (или открывает) файл для записи на него некоторых данных. Этот класс получает Контекст в конструкторе, сохраняет его в поле экземпляра и затем использует его для вызова метода context.openFileOutput.

При запуске приложения я создаю экземпляр этого класса, передавая ApplicationContext как контекст, и все работает как ожидалось.

Однако, когда я пытаюсь протестировать этот класс с помощью Instrumentation Test, я получаю NullPointerException. Я передаю контекст getInstrumentation().getContext(), который, как мне известно, соответствует контексту теста, а не одному из реальных приложений.

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

В рамках теста мне нужен этот файл, который будет создан в тестовом пакете, а не в пакете приложения, так как я не хочу перезаписывать файл в своем приложении.

Я знаю, что существует класс RenamingDelegatingContext, но я не могу передать этот контекст в свой класс, так как мой класс также открывает исходный ресурс, и я хочу, чтобы этот ресурс отличался при запуске теста (что-то вроде насмешливого ресурсы).

Я много искал об этом, и нет документации о Контексте Инструментария. Я не мог найти никаких ограничений и ничего, что могло бы решить мою проблему.

Вы знаете, как справиться с этим?

Ответы

Ответ 1

Я не могу вспомнить, когда это было изменено, но текущий метод для получения объекта Context во время тестирования с помощью Instrumented - это импорт

import android.support.test.InstrumentationRegistry;

и вызовите

InstrumentationRegistry.getContext();

Надеюсь, это поможет!