Как загрузить файл 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,

Другие вопросы по тегам