用途:该技能用于编写新的测试文件、用 group 组织测试套件、通过 dart_test.yaml 配置测试执行,以及理解测试生命周期方法。
主要能力:
- 测试结构:test 是基本单元,group 用于逻辑分组,可嵌套,描述会拼接(如“Group Description Test Description”)。对应类名的 group 用 PascalCase;若文件中只有一个 group,避免用单个 group 包裹全部测试。清理既有代码时,除非明确要求,不要移除 group,以免产生大量 diff。测试名避免冗余的“test”前缀,应包含预期行为或结果,且与 group 名拼接后读起来通顺。test 和 group 的命名参数(如 testOn、timeout、skip)放在描述字符串之后、回调闭包之前。
- 生命周期:setUp 在当前 group(含嵌套 group)每个测试前运行,tearDown 在每个测试后运行,setUpAll 在组内任何测试前运行一次,tearDownAll 在组内所有测试后运行一次。用 setUp 重置状态以保证测试隔离,避免共享可变状态而不重置。
- 资源清理:测试体内创建的资源建议用 addTearDown 而非 try-finally。可在资源创建意图之后立即注册清理回调。
- 配置:dart_test.yaml 可配置平台(vm、chrome、node)、标签(tags,如 integration 并设 timeout: 2x,代码中用 @Tags(['integration']) 标注,运行 dart test --tags integration)以及默认超时(如 timeouts: 2x)。
- 文件命名:测试文件必须以 _test.dart 结尾,放在 test/ 目录下。
常用命令:dart test 运行全部测试;dart test test/path/to/file_test.dart 运行指定文件;dart test --name "substring" 运行描述匹配的测试。
相关技能:断言编写可参考 dart-matcher-best-practices(使用 package:matcher 的 expect)或 dart-checks-migration(迁移到 package:checks 的 check)。
限制:资料未提供具体版本要求、平台兼容性细节或性能数据。