我们有一个非常罕见的要求,即我们的Android应用程序执行单元测试,这些测试只使用了单元测试所需的资产。
使用基于Eclipse的SDK,这很简单明了 - 测试项目是一个带有自己资产文件夹的独立项目。对于Android Studio,这意味着可以在build.gradle(或按惯例)配置。
我们的单元测试最终正在执行,但我已经用尽了我发现的有关自定义(理想情况下,已合并)资源文件夹的所有建议。以下是我尝试过的内容:
在android闭包中向sourceSets添加一个测试闭包(通过闭包我的意思是在build.gradle中的花括号之间)。
androidTest {
assets.srcDirs = ['src/androidTest/assets/']
}
同样的事情,但是"测试"作为sourceSet的名称(与" androidTest",上面相对)以及" instrumentTest"。
这个问题可以更一般地说明为"如何在Android Studio"中使用不同的目录进行单元测试。
我们已经浏览了Android的文档,我们不理解它,它是错的,或者某处有错误。
非常感谢任何帮助。
答案 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']
}
}
}