我有一个使用Gradle作为构建系统的Java应用程序。这是多项目构建的(几个Java项目)。
当我运行gradlew test
并且某些测试失败时,我注意到并非所有测试都实际运行。
如果我将以下代码添加到build.gradle
,它会运行所有测试,但当然,构建的内容总是成功完成:
test {
ignoreFailures = true
}
我有两个问题:
答案 0 :(得分:2)
确保从项目的根目录运行测试。
test
任务是Gradle的Java插件的一部分。从官方文件中可以看出:
具有大型测试套件的项目可能需要很长时间才能执行,即使在早期发生故障导致不必要的等待时间(尤其是在CI上)。要使此行为短路,Test.getFailFast()属性允许您在第一次测试失败后使测试任务失败,而不是运行所有测试。当此属性为true时,结果输出将仅显示已完成且包括失败的测试结果。要在构建文件中启用此失败快速行为,请将failFast属性设置为true:
test {
failFast = true
}
--fail-fast命令行选项可以从命令行启用该行为。调用如下:
gradle test --fail-fast
failFast属性的默认值为false。
可以找到官方文档here。
所以回答你的问题:
默认情况下,Gradle在第一次失败后不会停止执行测试。可以使用failFast属性修改此行为。
默认行为应该可以解决问题。通过运行gradle test
,将运行所有测试。如果其中任何一个失败,则构建将失败。由于您有多项目构建,请确保从根项目中运行Gradle。
答案 1 :(得分:1)
Gradle提供--continue参数gradlew build --continue
,无论成功与否,都会执行所有任务。但是,如果任何执行的任务失败,则整个构建将标记为失败。
我认为你正在寻找那个转变。