将Eclipse Android Junit测试迁移到Android Studio Gradle中



我们正试图使用gradle将使用ant构建的Eclipse项目迁移到Android Studio中。到目前为止,除了使用外部json文件的JUnit测试之外,一切都很好。我们有很多这样的文件,其中外部文件和java文件位于同一目录中。有没有一种方法可以将java代码和json文件保持在同一位置,只需在gradle中修改构建脚本?

当前构建目录类似于compackkrf,包含MyFileTest.javadata.json。加载json的源代码如下:

getClass().getResourceAsStream("data.json");

我不想更改300多个具有相同结构的java文件。另外,我不想分组到gradle中的资源目录中,因为其中一些文件将具有相同的名称。

这是我的一个队友提出的解决方案。在android声明之后,将其添加到您的build.gradle文件中。打印路径用于调试。

task alterResourcePath << {
     sourceSets.testDebug.resources.srcDir('src/test/java')
     sourceSets.testDebug.resources.srcDirs.each {
     File f->
         if(f.exists()){
            println f.path
         }
     }
}
test.dependsOn alterResourcePath

默认情况下,gradle(如Maven)将资源放在src/main/resources下,因此您必须告诉gradle在src/<something>/java中查找它们:

android {
    sourceSets {
        instrumentTest {
            resources {
                srcDirs = ['src/instrumentTest/java']
            }
        }
    }
}

如果你正在运行roboelectric测试,你也可以这样做,但roboelectrical插件使用标准的java源代码集。所以你不会在Android扩展中这样做:

sourceSets {
    test {
        resources {
            srcDirs = ['src/test/java']
        }
    }
}

如果使用其他源集(按风格或按构建类型),则也需要更新这些源集。

相关内容

最新更新