Android单元测试中的资源文件访问“ InvocationTargetException”

时间:2018-07-31 11:17:16

标签: android mockito powermockito

JUnitTest / Mockito / PowerMockito :: 试图从android中的res / raw文件访问dataSet json文件,但得到“ InvocationTargetException

InputStream in = this.getClass().getClassLoader().getResourceAsStream("resource.json");
        try {
            Reader reader = new InputStreamReader(in, "UTF-8");
            ConfigModel result  = new Gson().fromJson(reader, ConfigModel.class);
        } catch (IOException e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:0)

编辑:更新的版本。 如果您使用Android工具测试,那么您可以获得context,并且可以执行类似的操作,

@Test
public void someTest() {
    // Context of the app under test. 
    // In this case put your resource in your app's assets folder src/main/assets
    Context appContext = InstrumentationRegistry.getTargetContext();

    / **
    * Context of the test app. 
    * In this case put your resource in your test app's assets folder src/androidTests/assets
    * Context appContext = InstrumentationRegistry.getContext();
    **/

    InputStream in = null;
    try {
        in = appContext.getAssets().open("resource.json");
    } catch (IOException e) {
        e.printStackTrace();
    }

}

如果您不想进入Android测试方式,则简单的方法是将resource.json放在src/test/resources文件夹下,然后上面的代码将起作用。像这样的东西。

@Test
public void test() {
        ClassLoader classLoader = this.getClass().getClassLoader();
        InputStream res = classLoader.getResourceAsStream("testFlags.json");
}

我对此进行了一些测试,可以说它们运行良好。让我知道怎么回事。