测试运行说明
在项目根目录执行以下命令。
Dart 测试按功能模块组织在 test/app/、test/library/、test/notes/、test/markdown/、
test/difference/、test/sync/、test/photos/、test/voice/、test/mp3/ 和 test/shared/。
flutter test 会发现这些子目录中的全部测试;test/ui/ 保留独立的 Android UI 回归脚本,
test/data/ 保留从项目根目录读取的共享夹具。
标签相关测试按职责拆分,运行 flutter test test/notes/ 可一并验证:
note_tabs_test.dart:基础标签状态、编辑控件和列表选择、关闭操作。note_tabs_pinned_test.dart:固定标签布局、点击手势和 MRU 列表排序。note_tab_session_test.dart:标签草稿、视图状态持久化与冲突恢复。tab_session_controller_test.dart:标签会话控制器及 MRU 状态管理。
查看失败用例
项目通过 dart_test.yaml 默认使用 expanded 输出,每次更新独占一行,保留用例名称、失败原因和堆栈。
末尾仍会显示汇总;具体失败信息在之前标记为 [E] 的用例附近。
flutter test
也可以临时指定输出格式,或只显示失败用例:
flutter test --reporter expanded
flutter test --reporter failures-only
需要保存完整输出以便搜索时:
flutter test --reporter expanded 2>&1 | Tee-Object -FilePath test-output.log
test-output.log 是本地诊断日志,不要提交到 Git。
指定运行用例
运行单个文件,或一次运行多个文件:
flutter test test/difference/line_diff_test.dart
flutter test test/difference/line_diff_test.dart test/markdown/markdown_outline_test.dart
按用例名称的普通文本子串筛选;可以与文件路径一起使用:
flutter test test/difference/line_diff_test.dart --plain-name "matches long text line diff fixtures"
--plain-name 是子串匹配,可能选中多个用例。需要精确匹配时,用 --name 正则表达式并加上首尾锚点:
flutter test test/difference/line_diff_test.dart --name '^matches long text line diff fixtures$'
有 group 时,匹配的完整名称还包含分组名称。以测试输出中的完整名称为准,正则中的特殊字符需要转义。
只调试第一个失败时:
flutter test --reporter expanded --fail-fast
