Как загрузить файл json из модульного теста Android, который запускается с PowerMockRunner?
Я использую PowerMockRunner для запуска своих модульных тестов. Я хочу загрузить некоторые файлы JSON с ответом по сети из папки "Мои активы".
Я использую этот метод, чтобы попытаться получить файл.
private static File getFileFromPath(Object obj, String fileName) {
ClassLoader classLoader = obj.getClass().getClassLoader();
URL resource = classLoader.getResource(fileName);
return new File(resource.getPath());
}
Я вызываю такой метод из моего класса, который имеет эти аннотации вверху.
@RunWith(PowerMockRunner.class)
@PrepareForTest(Network.class)
File file = getFileFromPath(this, "mock_response.json");
Однако когда я оцениваю это выражение.
classLoader.getResource(".");
Это показывает, что я в настоящее время нахожусь в этом каталоге ниже во время выполнения этого теста.
/Users/tylerpfaff/Library/Android/sdk/platforms/android-23/data/res/
Поскольку я нахожусь в каталоге ресурсов платформ, нет никакой надежды на успешную загрузку моих ресурсов из каталога ресурсов моего проекта. Что мне нужно сделать, чтобы получить доступ к моей директории ресурсов моего проекта?
1 ответ
У вас есть два варианта:
- попробуйте получить системный загрузчик классов через
ClassLoader.getSystemClassLoader()
- Получить загрузчик классов из класса, который был проигнорирован PowerMock. По умолчанию:
"org.hamcrest.", "java.", "javax.accessibility.", "sun.", "org.junit.", "org.testng.", "junit.", "org.pitest.", "org.powermock.modules.junit4.common.internal.", "org.powermock.modules.junit3.internal.PowerMockJUnit3RunnerDelegate", "org.powermock.core *", "org.jacoco.agent.rt. *"
Или вы можете использовать @PowerMockIgnore
,