用途:为 Java 项目提供 JUnit 5 参数化单元测试的编写模式,用同一段测试逻辑覆盖多组输入,减少重复代码,适合数据驱动测试与边界值分析。
主要能力:覆盖 @ValueSource(简单值)、@CsvSource(表格数据)、@MethodSource(复杂对象)、@EnumSource(枚举)、@ArgumentsSource(自定义 ArgumentsProvider)以及自定义显示名称 name = "{0}..."。
使用方式:确保测试类路径包含 junit-jupiter(已含 params),可加 assertj-core 做断言。Maven 依赖为 org.junit.jupiter:junit-jupiter,scope 为 test;Gradle 使用 testImplementation("org.junit.jupiter:junit-jupiter")。选择合适数据源,保证测试方法参数与数据源类型匹配,运行 ./gradlew test --info 或 mvn test 验证所有参数组合执行。
限制:参数数量必须与测试方法签名一致;@ValueSource 仅支持基本类型、字符串和枚举,不支持对象或直接传 null;@CsvSource 中含逗号的字符串需用单引号转义;@MethodSource 的工厂方法必须是同一测试类中的静态方法;每组参数作为独立测试调用执行。
适用场景:多输入组合的 JUnit 测试、Java 数据驱动测试、同一测试跑不同值(边界分析)、单方法覆盖多场景。