测试Gradle中目录的存在性?
我有一个目录,我必须在其中放置一些结果,但用户可以配置它 如果目录不存在,我必须创建它。但现在我必须为代码编写测试 getOutputPath()是getter方法测试Gradle中目录的存在性?,gradle,execution,mkdir,spock,Gradle,Execution,Mkdir,Spock,我有一个目录,我必须在其中放置一些结果,但用户可以配置它 如果目录不存在,我必须创建它。但现在我必须为代码编写测试 getOutputPath()是getter方法 @Optional def outputPath = new File('build/sampleDir') @TaskAction def generate() { if (!getOutputPath().exists()) { project.mkdir(getOutputPath()) }
@Optional
def outputPath = new File('build/sampleDir')
@TaskAction
def generate() {
if (!getOutputPath().exists()) {
project.mkdir(getOutputPath())
}
创建在操作闭包中,因此这是在执行阶段执行的,但是如果我尝试:
...
def 'change default outputPath dir'() {
when:
someTask.outputPath = new File(project.rootProject.buildDir, "newPath")
then:
....
expect:
project.afterEvaluate {
generateQRFromTextTask.getOutputQRPath().exists() == true
}
}
让我惊讶的是,这段代码也通过了相同的程序,但是通过了project.gradle.buildFinished{。
如果没有它们,它就失败了。为什么测试通过了afterEvaluate
进行此检查的最佳方法是什么(对于存在的目录?在构造函数中还是?属性应该用
@OutputDirectory
注释,在这种情况下,将自动创建目录
PS:根据测试的具体性质,afterEvaluate
可能永远不会触发
PPS:具有默认值的属性不需要用
@Optional
注释。谢谢您的回答和建议。