Contents

Gradle 跳过测试

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'
}