在Gradle中测试目录的存在?

时间:2014-07-31 15:08:59

标签: gradle execution mkdir spock

我有一个目录,我必须在其中放置一些结果,但用户可以配置它 如果目录不存在,我必须创建它。但现在我必须为该代码编写测试。

getOutputPath()是getter方法

@Optional
def outputPath = new File('build/sampleDir')


@TaskAction
def generate() {
    if (!getOutputPath().exists()) {
        project.mkdir(getOutputPath())
    }

创建在Action闭包中,所以这是在执行阶段执行的,但如果我尝试:

    ...
    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

进行此检查的最佳方法是什么(对于目录是否存在?在构造函数或?

1 个答案:

答案 0 :(得分:3)

该属性应使用@OutputDirectory进行注释,在这种情况下,将自动创建目录。

PS:根据测试的确切性质,afterEvaluate可能永远不会被触发。

PPS:具有默认值的属性不需要使用@Optional进行注释。