如何在任务规则中定义任务时强制执行测试任务?

时间:2014-04-07 17:16:47

标签: groovy gradle

我了解您可以通过向build.gradle添加以下内容来强制执行测试任务:

tasks.withType( Test ) {
    outputs.upToDateWhen { false }
}

但是,这似乎不适用于在任务规则中定义的测试任务。具体来说,我有一个任务规则如下:

tasks.addRule("Pattern: single<ID>: Run single test.") { String taskName ->
    if (taskName.startsWith("single")) {
        String pattern = taskName - 'single'
        task(taskName, type: Test ) {
            outputs.upToDateWhen { false }
            include pattern
        }
    }
}

但是,即使我在build.gradle中有上面的第一个块,任务规则总是完成而不做任何事情。以下是输出示例:

$ gradle cleanTest singleBuildInfoScenario000001
:cleanTest UP-TO-DATE
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:compileTestGroovy UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:singleBuildInfoScenario000001 UP-TO-DATE

BUILD SUCCESSFUL

Total time: 4.868 secs

那么,如何在使用任务规则时运行相应的测试?

非常感谢。

1 个答案:

答案 0 :(得分:1)

我认为singleBuildInfoScenario000001是最新的,因为它没有运行任何测试。 (使用--info运行可能会提供更多信息。)看起来该任务缺少某些配置信息,例如classpathtestClassesDir。有关如何从头开始配置Test任务的示例,请参阅完整Gradle分发中的samples/java/withIntegrationTests