我有一个非常标准的摇篮构建大厦的Java项目。
当我运行它的第一次,这一切编译并运行测试。 当我运行它第二次在不改变任何文件,再次运行测试。
根据这一线索 ,摇篮应该是通过默认偷懒,懒得运行测试,如果一切都没有改变。 有默认的行为在这里被改变?
编辑:
如果我运行gradle test
反复,测试只运行一次,并随后被跳过。 但是,如果我运行gradle build
反复测试得到重新每次运行,即使所有其他任务被标记为跟上时代的。
我有一个非常标准的摇篮构建大厦的Java项目。
当我运行它的第一次,这一切编译并运行测试。 当我运行它第二次在不改变任何文件,再次运行测试。
根据这一线索 ,摇篮应该是通过默认偷懒,懒得运行测试,如果一切都没有改变。 有默认的行为在这里被改变?
编辑:
如果我运行gradle test
反复,测试只运行一次,并随后被跳过。 但是,如果我运行gradle build
反复测试得到重新每次运行,即使所有其他任务被标记为跟上时代的。
在信息层面为什么任务不被认为是gradle这个最新检查日志,以达到最新。 请重新运行“gradle这个构建-i”用信息记录在检查日志输出运行。
欢呼声,刘若英
好了,我得到了答案感谢刘若英促使我去看看“i”可输出...
其实,我有2项测试任务:“测试”一个从Java插件,和我自己的“integrationTest”之一。 我,因为我不认为这是相关的并没有问题提到这一点。
事实证明,这些任务正在编写它们的输出(报告等)到同一目录,所以摇篮的基于任务的输入和输出跟踪在想的东西发生了变化,并重新运行测试。
因此,接下来的问题(我将分别问)变成了:我怎么干净(并以最小的Groovy /摇篮代码)测试任务的完全独立的两个实例。
你需要在你的build.gradle来创建测试任务,然后调用这些特定的任务来运行一组特定的测试。 这里是将筛选出班,使他们没有得到运行两次(运行套件的时候,例如,然后重新运行独立于它的子类)的例子:
tasks.withType(Test) {
jvmArgs '-Xms128m', '-Xmx1024m', '-XX:MaxPermSize=128m'
maxParallelForks = 4 // this runs tests parallel if more than one class
testLogging {
exceptionFormat "full"
events "started", "passed", "skipped", "failed", "standardOut", "standardError"
displayGranularity = 0
}
}
task runAllTests(type: Test) {
include '**/AllTests.class'
testReportDir = file("${reporting.baseDir}/AllTests")
testResultsDir = file("${buildDir}/test-results/AllTests")
}
task runSkipSuite(type: Test) {
include '**/Test*.class'
testReportDir = file("${reporting.baseDir}/Tests")
testResultsDir = file("${buildDir}/test-results/Tests")
}
此外,关于您的构建问题。 “创建”的任务包括清洁步骤,从您的构建目录清洗试验。 否则,执行认为测试已经跑了。