Gradle 构建跳过测试

1. 介绍

管跳过测试通常不是一个好主意,但在某些情况下它可能有用,并且可以为我们节省一些时间。 例如,考虑我们正在开发一个新功能,并且希望在中间版本中看到结果。 在这种情况下,我们可能会暂时跳过测试以减少编译和运行它们的开销。 毫无疑问,忽略测试会导致许多严重的问题。

在这个简短的教程中,我们将了解如何在使用Gradle构建工具时跳过测试。

2. 使用命令行标志

首先,让我们创建一个我们想跳过的简单测试:

1
2
3
4
@Test
void skippableTest() {
    Assertions.assertTrue(true);
}

当我们运行构建命令:

1
gradle build

我们将会看到运行的任务:

> ...
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test
> ...

要从Gradle构建中跳过任何任务,我们可以使用-x或–exclude-task选项。 在这种情况下,我们将使用“ -x测试”从构建中跳过测试。

要查看它的实际效果,让我们使用-x选项运行build命令:

1
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,则将跳过测试。

让我们跳过基于检查项目属性的测试:

1
test.onlyIf { !project.hasProperty('someProperty') }

现在,我们运行构建命令并且向Gradle传入参数someProperty:

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

4. 结论

在本教程中,我们学习了使用Gradle构建工具时如何跳过测试。 我们还介绍了可在命令行上使用的所有相关选项以及可在Gradle构建脚本中使用的选项。

原文地址:https://www.baeldung.com/gradle-skip-tests

updatedupdated2020-12-082020-12-08
Load Comments?