原创 | TDD工具集:JUnit、AssertJ和Mockito (二十七)运行测试-在构建工具中运行测试


在构建工具中运行测试
1. Maven
Maven默认在阶段启动插件,执行项目中的所有测试。
1.1 插件和依赖
要支持JUnit平台,插件和插件的版本要在2.20.0以上,同时,测试类路径中必须包含至少一个实现。
如果只需要支持JUnit Jupiter,可以这样配置:
maven-surefire-plugin
2.22.2
maven-failsafe-plugin
2.22.2
org.junit.jupiter
junit-jupiter-api
5.6.2
test
org.junit.jupiter
junit-jupiter-engine
5.6.2
test
如果要支持JUnit 4编写的测试,要添加测试依赖项:
maven-surefire-plugin
2.22.2
maven-failsafe-plugin
2.22.2
junit
junit
4.13
test
org.junit.vintage
junit-vintage-engine
5.6.2
test
1.2 根据测试类文件名过滤测试
Maven Surefire插件默认会在项目测试类路径中扫描测试类,将全限定类名符合下面模式的测试类包含到测试中:
默认情况下,会忽略掉嵌套测试类。
可以配置插件的和规则,改变上面的默认值。例如:
maven-surefire-plugin
2.22.2
**/*.Test.java
**/*.Spec.java
../Abstract*.java
1.3 根据过滤测试
可以根据测试类或测试方法的注解来包含或排除某些测试。可以通过Tag表达式来组合Tag。
org.apache.maven.plugins
maven-surefire-plugin
2.22.2
unit-test
test
test
integration, acceptance
integration-test
test
integration-test
integration | acceptance
**/*
1.4 配置测试参数
可以像下面的示例那样配置测试平台的全局测试参数,其效果等价于在文件中设置全局测试参数:
maven-surefire-plugin
2.22.2
junit.jupiter.conditions.deactivate = *
junit.jupiter.extensions.autodetection.enabled = true
junit.jupiter.testinstance.lifecycle.default = per_class
1.5 执行测试
在构建生命周期的阶段,默认绑定了插件,会自动执行项目中的单元测试。在进入终端命令解释器之后,在项目的根目录下执行:
mvn clean test
就会自动根据中的配置,执行项目中的全部或部分单元测试。
2. Gradle
从版开始,提供了对平台的直接支持。
2.1 配置依赖项
在文件中添加依赖项:
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.2")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.2")
}
2.2 配置测试引擎
在节中指定使用:
test {
useJUnitPlatform()
}
如果要根据注解对测试进行过滤,需要在内部指定和/或:
test {
useJUnitPlatform {
includeTags 'fast', 'smoke & feature-a'
excludeTags 'slow', 'ci'
}
}
还可以在内部指定包含或排除特定的测试引擎:
test {
useJUnitPlatform {
includeEngines 'junit-jupiter'
excludeEngines 'junit-vintage'
}
}
2.3 配置全局测试参数
还可以指定配置测试平台的全局测试参数:
test {
// ...
systemProperty 'junit.jupiter.conditions.deactivate', '*'
systemProperties = [
'junit.jupiter.extensions.autodetection.enabled': 'true',
'junit.jupiter.testinstance.lifecycle.default': 'per_class'
]
// ...
}
2.4 执行测试
在终端窗口中,进入项目的根目录,执行下面的命令:
gradle build
会根据中的配置,自动执行项目中全部或部分单元测试。
3. Ant
从版本开始,通过任务可以执行启动平台。从版开始,支持将测试到独立的中执行。
文件示例配置如下:
任务可以在类路径中找到所有测试类,交给测试引擎执行测试。
可以通过在中定义子任务的方式,让只执行指定的测试:
可以通过在中定义子任务的方式,让搜索单元测试:
完整文件例子:
运行下面的命令执行测试:
ant test
具体代码示例请戳这里↓↓↓
本文相关开源代码戳这里下载↓↓↓
这一节就讲到这里,下一节我们讲讲"运行测试中的在终端控制台中运行测试"。
如果觉得有收获,点个【赞】鼓励一下呗!
