如何在所有testing都是UP-TO-DATE时运行Gradletesting?

我有我的成绩脚本设置。 当我执行Gradle构build时,一切正常,并运行jUnittesting。

之后,当我运行Gradletesting时,我得到以下内容:

C:\Users\..\..\Project>gradle test :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :compileTestJava UP-TO-DATE :processTestResources UP-TO-DATE :testClasses UP-TO-DATE :test UP-TO-DATE 

当我执行gradle clean ,Gradle构build工作,当然…我想只能重置testing,而不是构build整个项目:我该怎么做?

一个选项是在命令行中使用--rerun-tasks标志。 这将重新运行所有的testing任务和所有依赖的任务。

如果您只想重新运行testing,那么另一个select是在执行testing之前先使用gradle清理testing结果。 这可以使用cleanTest任务完成。

一些背景 – Java插件为每个其他任务定义了一个干净的任务。 根据文件 :

cleanTaskName – 删除由指定任务创build的文件。 cleanJar将删除jar任务创build的JAR文件,cleanTest将删除testing任务创build的testing结果。

因此,为了重新运行testing,您只需要运行cleanTest任务即:
gradle cleanTest test

其他选项是在build.gradle中添加以下内容:

 test.outputs.upToDateWhen {false} 

以下是使用“build.gradle”文件的解决scheme,以防您不想修改您的命令行:

 test { dependsOn 'cleanTest' //Your previous task details (if any) } 

这里是输出。 注意2您之前的输出更改:

1)输出中出现一个新的“cleanTest”任务。

2)“testing”总是被清除(即从来没有“UP-TO-DATE”),所以每次都执行:

 $ gradle build :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :findMainClass :jar :bootRepackage :assemble :cleanTest :compileTestJava UP-TO-DATE :processTestResources UP-TO-DATE :testClasses UP-TO-DATE :test :check :build 

gradle test --rerun-tasks

指定忽略任何任务优化。

来源: https : //gradle.org/docs/current/userguide/gradle_command_line.html

而且,不得不添加--rerun-tasks真的是多余的。 绝不会发生。 创build一个--no-rerun-tasks --rerun-tasks并在--rerun-tasks时使--rerun-tasks默认

我认为这是一个有效的问题,因为它可能在Gradle中运行这个命令test ,结果会发生什么事!

但是我会质疑是否需要这样做,正如Jolta在他的评论中所说:如果没有代码改变,为什么你需要重新testing? 如果您对第三方input有疑问,我会说您需要在您的应用代码中满足这一点。 如果你担心你的代码可能是“片状的”,也就是说能够通过所有的testing,而不是第一次(或第100次),你不需要考虑为什么你有这些疑问,并解决它们?

就我个人而言,我认为这是Gradle中的一个(非常小的)devise错误:如果一切都完全是最新的,而不是“成功build造”,那么应该说:“从最后的成功没有任何改变:没有任何改变”。