在我的build.gradle文件中,我为集成测试定义了一个单独的sourceSet:
sourceSets {
integtest {
java.srcDir 'src/integtest/java/io/attil/integration'
resources.srcDir 'src/integtest/resources'
}
}
我想在我的一个手动定义的任务中使用集成测试资源的路径(一个预先填充数据库以进行集成测试的任务; sql脚本位于上述资源文件夹中)。
我现在有以下解决方案:
task prefillDatabase {
// ... snip!
String sqlString = new File(sourceSets.integtest.resources.srcDirs.iterator().next().toString() + '/setup_integration_tests.sql').text
// ... snip!
}
虽然这有效,但它非常麻烦。
是否有更好,更短的方法来实现同样的目标? (我正在寻找类似sourceSets.integtest.resources.srcDir
的东西。)
答案 0 :(得分:0)
我不确定这是不是那么冗长,但我认为这更正确
File file = sourceSets.integtest.resources.matching {
include 'setup_integration_tests.sql'
}.singleFile
String sqlString = file.text
请参阅FileTree.matching(Closure)和FileCollection.getSingleFile()
另外,这对我来说不合适
java.srcDir 'src/integtest/java/io/attil/integration'
我认为会是
java.srcDir 'src/integtest/java'
java.include 'io/attil/integration/**'