JUnit 5 配置文件详解
JUnit 5 通过 junit-platform.properties
文件提供全局配置,允许开发者定制测试引擎、执行策略、日志行为等。以下是常用配置项及其含义,以及详细示例说明。
一、配置文件位置
- 路径 :
src/test/resources/junit-platform.properties
若目录不存在需手动创建。
二、核心配置项及示例
1. 并行测试配置
控制测试的并发执行,提升测试速度。
配置项 | 取值及含义 | 示例值 |
---|---|---|
junit.jupiter.execution.parallel.enabled |
true (启用并行) / false (禁用并行,默认) |
true |
junit.jupiter.execution.parallel.mode.default |
concurrent (并行) / same_thread (串行,默认) |
concurrent |
junit.jupiter.execution.parallel.mode.classes.default |
类级别的并行模式,同上 | same_thread |
junit.jupiter.execution.parallel.config.strategy |
线程分配策略:dynamic (动态) / fixed (固定) / custom (自定义) |
fixed |
junit.jupiter.execution.parallel.config.fixed.parallelism |
固定线程数(当策略为 fixed 时有效) |
4 |
示例配置:
properties
# 启用并行测试
junit.jupiter.execution.parallel.enabled = true
# 默认并行模式
junit.jupiter.execution.parallel.mode.default = concurrent
# 类内方法串行执行(避免共享资源冲突)
junit.jupiter.execution.parallel.mode.classes.default = same_thread
# 固定线程池大小为 4
junit.jupiter.execution.parallel.config.strategy = fixed
junit.jupiter.execution.parallel.config.fixed.parallelism = 4
2. 测试过滤配置
按标签、包名或类名过滤测试用例。
配置项 | 取值及含义 | 示例值 |
---|---|---|
junit.jupiter.include.tags |
包含指定标签的测试(支持 AND /OR 逻辑) |
`fast |
junit.jupiter.exclude.tags |
排除指定标签的测试 | slow & integration |
junit.jupiter.include.packages |
包含指定包下的测试类(逗号分隔) | com.example.unittest |
junit.jupiter.exclude.classes |
排除指定测试类(全限定名,逗号分隔) | com.example.LegacyTest |
示例配置:
properties
# 仅运行标记为 "fast" 或 "unit" 的测试
junit.jupiter.include.tags = fast | unit
# 排除标记为 "slow" 且 "integration" 的测试
junit.jupiter.exclude.tags = slow & integration
# 仅扫描 com.example.unittest 包下的测试类
junit.jupiter.include.packages = com.example.unittest
3. 参数化测试配置
控制参数化测试的数据源和显示格式。
配置项 | 取值及含义 | 示例值 |
---|---|---|
junit.jupiter.params.displayname.default |
参数化测试的默认显示名称格式(支持 {index} , {arguments} 占位符) |
[{index}] {arguments} |
junit.jupiter.params.converter.enum.default |
枚举参数转换模式:ignore_case (忽略大小写) / exact (精确匹配,默认) |
ignore_case |
示例配置:
properties
# 参数化测试显示名称格式
junit.jupiter.params.displayname.default = [参数组 {index}] 参数: {arguments}
# 枚举参数忽略大小写
junit.jupiter.params.converter.enum.default = ignore_case
4. 测试引擎配置
禁用或启用特定测试引擎。
配置项 | 取值及含义 | 示例值 |
---|---|---|
junit.jupiter.testengine.id.filter |
启用或禁用测试引擎(逗号分隔,include 包含,exclude 排除) |
include:junit-jupiter |
示例配置:
properties
# 仅启用 Jupiter 引擎,禁用 Vintage(JUnit 4 兼容)
junit.jupiter.testengine.id.filter = include:junit-jupiter, exclude:junit-vintage
5. 条件测试扩展配置
控制条件测试的行为。
配置项 | 取值及含义 | 示例值 |
---|---|---|
junit.jupiter.conditions.deactivate |
禁用所有条件测试(true 禁用,false 启用) |
true |
示例配置:
properties
# 禁用所有条件测试(如 @EnabledIfEnvironmentVariable)
junit.jupiter.conditions.deactivate = true
6. 日志与输出配置
调整测试执行日志的详细程度。
配置项 | 取值及含义 | 示例值 |
---|---|---|
logging.level.root |
日志级别:TRACE , DEBUG , INFO , WARN , ERROR (需结合 SLF4J 实现) |
DEBUG |
示例配置:
properties
# 启用 DEBUG 级别日志
logging.level.root = DEBUG
三、完整配置文件示例
properties
# junit-platform.properties
# 并行测试配置
junit.jupiter.execution.parallel.enabled = true
junit.jupiter.execution.parallel.mode.default = concurrent
junit.jupiter.execution.parallel.mode.classes.default = same_thread
junit.jupiter.execution.parallel.config.strategy = fixed
junit.jupiter.execution.parallel.config.fixed.parallelism = 4
# 测试过滤
junit.jupiter.include.tags = fast | unit
junit.jupiter.exclude.tags = slow & integration
junit.jupiter.include.packages = com.example.unittest
# 参数化测试显示格式
junit.jupiter.params.displayname.default = [参数组 {index}] 参数: {arguments}
# 禁用 Vintage 引擎
junit.jupiter.testengine.id.filter = exclude:junit-vintage
# 日志配置
logging.level.root = INFO
四、总结
通过 junit-platform.properties
文件,可以实现以下目标:
- 提升测试效率:通过并行执行加速测试。
- 精准控制测试范围:按标签、包名或类名过滤测试。
- 增强可读性:自定义参数化测试的显示名称。
- 灵活兼容性:禁用不必要的测试引擎(如 JUnit 4)。
建议根据项目需求逐步调整配置,并通过日志验证配置效果。