在Android Studio中为单元测试设置自定义资源目录

时间:2014-09-05 10:13:54

标签: android unit-testing gradle android-studio

我们有一个非常罕见的要求,即我们的Android应用程序执行单元测试,这些测试只使用了单元测试所需的资产。

使用基于Eclipse的SDK,这很简单明了 - 测试项目是一个带有自己资产文件夹的独立项目。对于Android Studio,这意味着可以在build.gradle(或按惯例)配置。

我们的单元测试最终正在执行,但我已经用尽了我发现的有关自定义(理想情况下,已合并)资源文件夹的所有建议。以下是我尝试过的内容:

  • 在android闭包中向sourceSets添加一个测试闭包(通过闭包我的意思是在build.gradle中的花括号之间)。

    androidTest {
        assets.srcDirs = ['src/androidTest/assets/']
    }
    
  • 同样的事情,但是"测试"作为sourceSet的名称(与" androidTest",上面相对)以及" instrumentTest"。

  • 上面的各种组合,加上androidTest.setRoot(" test"),androidTest.setRoot(" androidTest"),这两者都导致我们的单元测试无法识别(& #34;空套件")。

这个问题可以更一般地说明为"如何在Android Studio"中使用不同的目录进行单元测试。

我们已经浏览了Android的文档,我们不理解它,它是错的,或者某处有错误。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:24)

我偶然发现了自己问题的答案,为此我获得了令人垂涎的“Tumbleweed”奖,该奖项专门用于激发特别值得注意的缺乏兴趣的问题。它永远不会对某人有用。

最后,我将把这描述为Android的gradle构建中的一个错误,但是在没有任何确凿的文档的情况下,这将是一个意见。

似乎“androidTest / assets”不起作用。但是“调试/资产”确实如此。顺便说一下“debug / java”也是如此,因此解决方案是将任何和所有测试资源和代码放入调试根目录,但单元测试本身除外。

我还在build.gradle中添加了以下修改:

    androidTest {
        assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/']
        java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java']
    }

现在,我正在运行单元测试,使用发布版本未知的资产和模拟。

答案 1 :(得分:4)

我正在使用Android Studio 1.3 + Gradle 1.2.3并且src / androidTest / assets对我不起作用。我将所有内容放在src / debug中,而没有对build.gradle进行任何更改,并且它工作正常。在构建apk时,Android似乎会自动从调试文件夹中获取项目。

答案 2 :(得分:4)

我以前不知道它是怎么回事,但是我能够创建Android检测单元测试,在那里我可以读取测试资产或生产资产。有关详细信息,请参阅this答案。

答案 3 :(得分:0)

我觉得这很适合我

android{
    sourceSets {
        androidTest {
            assets.srcDirs = ['src/main/assets', 'src/androidTest/assets/', 'src/debug/assets/']
            java.srcDirs = ['src/main/java', 'src/androidTest/java', 'src/debug/java']
        }
    }
}