【问题标题】:How can I load a json file from an android unit test that is run with PowerMockRunner?如何从使用 PowerMockRunner 运行的 android 单元测试加载 json 文件?
【发布时间】:2016-07-17 16:31:50
【问题描述】:

我正在使用 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/

看到我在平台资源目录中,我没有希望从项目的资源目录中成功加载资源。我需要做什么才能访问我的项目的资源目录?

【问题讨论】:

    标签: android json unit-testing mockito powermock


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      相关资源
      最近更新 更多