用途:把 Dart 测试套件从 package:matcher(由 package:test/test.dart 默认导出)迁移到类型安全、可读性更强的 package:checks 断言库。适用于被要求“迁移测试到 checks”“使用 package:checks”或“现代化测试断言”的场景。
主要能力:给出完整迁移工作流,包括依赖设置、目标文件识别、逐文件或增量迁移、静态分析与测试验证;提供 matcher 到 checks 的映射表、无直接替代项的变通写法,以及用扩展方法编写自定义断言的说明。
使用方式:先执行 dart pub add dev:checks 添加开发依赖;用 grep 定位遗留 expect/expectLater 调用;将 import 'package:test/test.dart'; 替换为 import 'package:test/scaffolding.dart'; 与 import 'package:checks/checks.dart';,增量迁移时可临时保留 import 'package:test/expect.dart';。改写断言后运行 dart analyze 与 dart test 验证。
关键差异与限制:集合相等需用 .deepEquals 而非 .equals;reason 参数改为 check 的 because 命名参数;正则需显式传 RegExp 给 matchesPattern;属性提取用 .has 替代 TypeMatcher.having;同步 .throws<E>() 返回 Subject<E> 且不接受回调,异步需 await 并传回调;bool? 字段不能用 isTrue/isFalse;Map 键判断用 containsKey;扩展类型需显式泛型参数;dynamic 的 JSON 结果需显式转换。部分 matcher(如 throwsArgumentError、anything、isPositive 等)无直接替代,需用 .throws<T>()、空回调或比较断言替代。
适用场景:遗留 Dart/Flutter 测试套件的现代化改造。限制:资料未提供具体版本要求、性能数据或平台支持信息。