Gradle 跳过测试
Contents
1. 简介
虽然跳过测试通常是一个坏主意,但在某些情况下它可能有用,它会节省我们一些时间。例如,假设我们正在开发一个新功能,并且我们希望在中间构建中看到结果。在这种情况下,我们可能会暂时跳过测试以减少编译和运行它们的开销。毫无疑问,忽略测试会导致许多严重的问题。
在这个简短的教程中,我们将了解如何在使用Gradle 构建工具时跳过测试。
2. 使用命令行标志
首先,让我们创建一个我们想要跳过的简单测试:
@Test
void skippableTest() {
Assertions.assertTrue(true);
}
当我们运行build命令时:
gradle build
我们将看到正在运行的任务:
> ...
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test
> ...
*要跳过 Gradle 构建中的任何任务,我们可以使用-x或–exclude-task*选项。**在这种情况下,我们将使用“ -x test ”来跳过构建中的测试。
要查看它的实际效果,让我们使用*-x选项运行build*命令:
gradle build -x test
我们将看到正在运行的任务:
> Task :compileJava NO-SOURCE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar
> Task :assemble
> Task :check
> Task :build
结果,测试源没有被编译,因此也没有被执行。
3. 使用 Gradle 构建脚本
我们有更多选项可以使用 Gradle 构建脚本跳过测试。例如,我们可以*使用*onlyIf()方法基于某些条件或仅在特定环境中跳过测试。如果此方法返回false将跳过测试。
让我们跳过基于检查项目属性的测试:
test.onlyIf { !project.hasProperty('someProperty') }
现在,我们将运行build命令并将someProperty传递给 Gradle:
gradle build -PsomeProperty
因此,Gradle 会跳过运行测试:
> ...
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test SKIPPED
> Task :check UP-TO-DATE
> ...
此外,我们可以使用build.gradle文件中的exclude属性根据它们的包或类名排除测试:
test {
exclude 'org/boo/**'
exclude '**/Bar.class'
}
**我们还可以跳过基于正则表达式模式的测试。**例如,我们可以跳过所有类名以“ Integration ”结尾的测试:
test {
exclude '**/**Integration'
}