JUnit 5 配置文件详解


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)。

建议根据项目需求逐步调整配置,并通过日志验证配置效果。

相关推荐
鱼鳞_1 天前
热门八股-JVM
java·jvm
ly76891 天前
XML 从入门到实践:语法、命名空间、XPath、XSD 与 Java 安全解析
xml·java·python
长谷深风1111 天前
好的 Tool Schema,不是字段越全越好
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
IT 行者1 天前
用 HiddenHttpMethodFilter 解决浏览器不支持 PUT/DELETE/PATCH 的问题
java·spring
晚安code1 天前
Redis 内存淘汰策略实战:什么时候淘汰、怎么选、怎么防缓存击穿
java·redis·缓存
goyeer1 天前
Liunx日志管理与journalctl
java·linux·运维·服务器·运维开发·信息化·信息化企业管理
tianyu2341 天前
Java 正则表达式终极指南:从 Pattern 到 Matcher,从双重转义到性能优化,一篇全搞定
java·开发语言·正则表达式·group·find·pattern·matcher
Emily156853598701 天前
Emerson 1C31129G03 Analog Input Module
java·开发语言·前端·plc·emerson·1c31129g03·input module
就叫_这个吧1 天前
Java递归方法实现面包屑导航
java·开发语言
fīɡЙtīиɡ ℡1 天前
AI 应用系统设计
java·开发语言·人工智能