在releseUnitTest中使用调试资产而不是发布应用程序资产

时间:2016-07-26 15:37:47

标签: android testing

我用robolectric进行单元测试。对于某些测试,我在debug assest文件夹中添加了json文件,并通过以下方式获取它们:RuntimeEnvironment.application.getResources().getAssets().open(filename);

在debugUnitTest中,我可以访问debugAssests,但是如果我运行我的releaseUnitTest,我就不会。

如何告诉releaseUnitTest从调试文件夹中获取资产?或者您将在哪里保存json文件以在单元测试中使用它们?

2 个答案:

答案 0 :(得分:0)

不是将json文件保存在diff flavor的资源文件夹中,而是将它们放在test assets文件夹中,这样可以让所有不同的文件访问资产内容。

Here is a screenshot for reference

尝试将此添加到build.gradle文件中的android {}块

sourceSets{
    test {
        assets.srcDirs = ['src/test/assets']
    }
}

答案 1 :(得分:0)

所以我终于成功了。我在这个robolectric github issue找到了答案。感谢nebiros。

  • 将您的灯具文件添加到测试文件的资源文件夹中,此处为:src / test / resources。
  • 将测试资源文件夹添加到androidTest,resources.srcDirs + = ['src / test / resources'],这是一个例子: android { sourceSets {     String sharedTestJavaDir ='src / sharedTest / java'

    test {
        java.srcDirs += [sharedTestJavaDir]
    }
    androidTest {
        java.srcDirs += [sharedTestJavaDir]
        resources.srcDirs += ['src/test/resources']
    }
    

    } }

  • 以这种方式从您的androidTest环境访问fixture文件:this.getClass().getClassLoader().getResourceAsStream(filename);