在gradle项目构建中跳过测试用例执行的方法

1,628 阅读2分钟

通过gradlebuildrun 命令,默认执行测试用例的执行。有时,我们想在执行gradle项目时禁用或忽略测试执行。

在Maven中,你可以通过命令行中的选项-DskipTests=true ,轻松实现。

本博客讲述了在gradle项目中禁用测试用例的不同方法。这将跳过以下测试用例

  • 单元测试用例
  • 集成测试

gradle命令中是否有-DskipTests?

不,它是不可用的。

用测试排除gradle任务

通常在你运行gradle build命令时,用测试排除gradle任务。

下面是一个任务执行的序列

gradle build
 Task :compileJava 
> Task :processResources 
> Task :classes 
> Task :jar
> Task :assemble 
> Task :compileTestJava 
> Task :processTestResources 
> Task :testClasses 
> Task :test 
> Task :check 
> Task :build 

gradle有一个选项可以在构建过程中排除(-x)或--exclude-task 一个任务。

test 是一个内置的任务,用于执行测试代码。

gradle build -x test 
or
gradle build --exclude-task test

下面是一个运行任务的输出

> Task :compileJava NO-SOURCE 
> Task :processResources NO-SOURCE 
> Task :classes UP-TO-DATE 
> Task :jar 
> Task :assemble 
> Task :check 
> Task :build

测试源代码没有被运行,即compileTestJava testClasses test 任务被忽略,没有被执行。这对多模块项目不起作用

假设你有这样的多模块项目

parent 
|-----module1
|-----module2
|-----build.gradle

在父项目中,如果你用-x运行gradle,它不会做任何事情

所以你必须运行两个命令来禁用多模块项目中的测试用例执行。

gradle build -x :module1:test
gradle build -x :module2:test

假设你有多模块项目

建立gradle脚本来禁止测试用例的编译和执行。

我们可以在构建脚本中使用一些属性配置来禁止测试用例的执行。

现在我们要根据onlyIf 条件来跳过测试任务的测试用例执行。

让我们添加 skipTest 布尔属性。

test.onlyIf { ! Boolean.getBoolean(skipTests) }

接下来,用-D运行带有布尔属性的gradle命令

gradle build -DskipTests=true

这将在执行gradle build项目时不执行测试任务。

如何在gradle中用包或类的名字执行单元测试

这是另一种排除测试案例执行的方法,使用

  • 包名
  • 类名
  • 正则表达式

在build.gradle中,你可以用包或类或正则表达式添加exclude 属性测试类。

test{
exclude 'com/'
exclude '**/EmpTest.class'
exclude '**/**UnitTest'
}

总结

在本教程中,学习了在gradle项目中跳过测试用例的执行

  • 使用命令行的单模块和多模块项目
  • 基于ngIf条件的构建脚本
  • 用包或类的名称或正则表达式在构建脚本中添加测试类的排除。