目标
校验函数有十几个只差输入与期望的测试方法,重复且难维护。本配方用 @MethodSource 或 @CsvSource 把用例以数据形式提供,一个测试方法覆盖全部用例,失败时能指出具体输入;同时提醒参数顺序错误会掩盖失败,需为用例命名。
步骤要点
- 用 @MethodSource 提供输入与期望。
- 用例表格化时改用 @CsvSource。
- 为用例命名或拆分源以便定位失败。
- 新增用例只需改一行数据。
@ParameterizedTest
@MethodSource("cases")
void validates(String input, boolean expected) {
assertEquals(expected, Validator.isValid(input));
}
static Stream<Arguments> cases() {
return Stream.of(
Arguments.of("ok", true),
Arguments.of("", false),
Arguments.of("bad!", false));
}
排错提示
- 失败输出若不含输入会难定位。
- 测试未被发现通常是缺少依赖或源方法非 static。
- 参数顺序错误会掩盖问题。
适用边界
- 不适用于各用例初始化差异很大的场景。
- 需要可读的用例命名。