我了解您可以通过向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
那么,如何在使用任务规则时运行相应的测试?
非常感谢。
答案 0 :(得分:1)
我认为singleBuildInfoScenario000001
是最新的,因为它没有运行任何测试。 (使用--info
运行可能会提供更多信息。)看起来该任务缺少某些配置信息,例如classpath
和testClassesDir
。有关如何从头开始配置Test
任务的示例,请参阅完整Gradle分发中的samples/java/withIntegrationTests
。