Flutter执行flutter test --coverage时如何排除指定测试文件夹?
Flutter 执行覆盖率测试时排除presentation目录的方案
你可以直接通过以下几种方式实现,不需要额外引入第三方依赖:
- 方案1:执行命令时直接指定待测试的目录(最推荐,零配置无兼容问题)
Flutter test 原生支持传入目标路径参数,执行时只会扫描你传入路径下的_test.dart测试文件,直接跳过未指定的目录:
flutter test --coverage business_logic/ utils/ generated/ services/
这种方式从测试执行阶段就跳过了presentation目录下的所有用例,直接砍掉对应部分的执行耗时,是效率最高的方案。
- 方案2:固化执行命令,避免每次输入长串路径
如果需要频繁跑覆盖率测试,可以在项目根目录写个简单的执行脚本,比如Linux/macOS下建run_cov_test.sh:
#!/bin/bash # 仅对指定4个目录执行带覆盖率的测试 flutter test --coverage business_logic/ utils/ generated/ services/
给脚本加执行权限:chmod +x run_cov_test.sh,后续每次跑测试直接执行./run_cov_test.sh即可。Windows环境可以写同名bat或者powershell脚本实现一样的效果。
- 方案3:过滤覆盖率统计结果(如果需要保留全量测试执行、仅不统计presentation目录覆盖率时用)
如果你本地安装了lcov工具(Mac执行brew install lcov、Ubuntu执行sudo apt install lcov即可安装),可以先正常跑全量测试,再从生成的覆盖率文件中移除presentation相关的统计记录:
# 先执行全量测试生成原始覆盖率文件 flutter test --coverage # 从覆盖率结果中移除所有presentation目录下的代码记录 lcov --remove coverage/lcov.info '*/presentation/*' -o coverage/lcov_filtered.info
后续生成html覆盖率报告时,使用过滤后的lcov_filtered.info文件即可,最终统计的覆盖率不会包含presentation目录的代码。
- 注意:不建议通过修改测试文件命名、修改测试框架全局配置的方式做目录排除,这类方案容易在Flutter版本升级后出现兼容问题,直接指定测试路径的方案在所有稳定版Flutter上都能正常运行。
内容的提问来源于stack exchange,提问作者Rohmatul Laily
相关产品推荐
相关产品推荐

