test-async-guardian
Installation
SKILL.md
Test Async Guardian
測試異步資源管理守護者 - 防止測試因未清理的異步資源而卡住。
問題背景
Dart/Flutter 測試框架會等待所有未完成的 Future 才結束測試。如果測試啟動了長延遲的異步操作但沒有正確清理,測試會無限期卡住。
導致測試阻塞的異步資源類型
| 資源類型 | 問題描述 | 清理方法 |
|---|---|---|
| 未完成的 Future | 長延遲異步操作沒有等待完成或取消 | service.clearAllQueries() 或 service.dispose() |
| Timer.periodic | 週期性定時器未取消 | timer.cancel() |
| StreamController | 廣播流未關閉 | controller.close() |
| Completer | Completer 未完成 | completer.complete() |
| 網路依賴 | flutter test 啟動時需要 pub.dev DNS 解析 | 確保網路連線,或使用離線模式 |
| testWidgets 時間 | Future.delayed 在 widget 測試中無法自動推進 | 呼叫 tester.pump() 或改用 test() |
| MCP run_tests 大量輸出 | 全部測試輸出量過大導致 MCP 卡住 | 使用 paths 參數或改用 flutter test |