Groovy 当任务在任务规则中定义时,如何强制测试任务运行?

Groovy 当任务在任务规则中定义时,如何强制测试任务运行?,groovy,gradle,Groovy,Gradle,我知道您可以通过向build.gradle添加以下内容来强制运行测试任务: tasks.withType( Test ) { outputs.upToDateWhen { false } } 但是,这似乎不适用于在任务规则中定义的测试任务。具体来说,我有一个任务规则如下: tasks.addRule("Pattern: single<ID>: Run single test.") { String taskName -> if (taskName.starts

我知道您可以通过向
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
        }
    }
}
那么,在使用任务规则时,如何运行相应的测试


非常感谢。

我认为
singleBuildInfoScenario000001
是最新的,因为它没有任何测试要运行。(使用
--info
运行可能会提供更多信息。)任务似乎缺少一些配置信息,例如
类路径
测试类目录
。有关如何从头开始配置
测试
任务的示例,请参阅完整Gradle发行版中的
samples/java/withIntegrationTests

谢谢您的回答。然而,我用其他虚拟JUnit测试用例进行了双重检查。同样的事情发生了。(BuildInfoScenario000001是一个Cucumber测试,因此可能会让事情变得有点复杂。)这应该被视为一个bug吗?您检查了什么?上面给出的
测试
任务配置显然不足。到目前为止,我没有任何理由相信这是一个Gradle bug。@Peter:我再次检查了设置。事实证明,答案的第一句话抓住了问题:任务没有任何测试要运行。我将模式更改为
'***'+pattern+'*'
。然后一切都按预期进行。非常感谢你。
$ 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