如何在所有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造”,那么应该说:“从最后的成功没有任何改变:没有任何改变”。
- Gradle Warning:缺lessgroovy返回语句
- 错误:执行任务失败:app:transformResourcesWithMergeJavaResForDebug'
- Android在Android Studio中使用新名称复制现有项目
- 为什么Android Studio项目中有两个build.gradle文件?
- 如何使用新的Gradle Android构build系统手动包含外部aar包
- Gradle和Multi-Project结构
- 如何将Apache HTTP API(legacy)作为编译时间依赖项添加到Android M的build.grade中?
- Gradle中的transitive = true究竟是做什么的(关于crashlytics)?
- 如何将本地.jar文件依赖项添加到build.gradle文件?