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

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

相关推荐
亲爱的非洲野猪4 分钟前
Kafka消息积压的多维度解决方案:超越简单扩容的完整策略
java·分布式·中间件·kafka
wfsm7 分钟前
spring事件使用
java·后端·spring
微风粼粼25 分钟前
程序员在线接单
java·jvm·后端·python·eclipse·tomcat·dubbo
缘来是庄28 分钟前
设计模式之中介者模式
java·设计模式·中介者模式
rebel1 小时前
若依框架整合 CXF 实现 WebService 改造流程(后端)
java·后端
代码的余温2 小时前
5种高效解决Maven依赖冲突的方法
java·maven
慕y2742 小时前
Java学习第十六部分——JUnit框架
java·开发语言·学习
paishishaba2 小时前
Maven
java·maven
张人玉3 小时前
C# 常量与变量
java·算法·c#
Java技术小馆3 小时前
GitDiagram如何让你的GitHub项目可视化
java·后端·面试