Запись/создание файла в контексте инструментария инструментария
У меня есть класс, который создает (или открывает) файл для записи на него некоторых данных. Этот класс получает Контекст в конструкторе, сохраняет его в поле экземпляра и затем использует его для вызова метода 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();
Надеюсь, это поможет!